{
  "contractName": "BatchExchangeViewer",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "INDEXED_AUCTION_ELEMENT_WIDTH",
      "outputs": [
        {
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "ADDRESS_WIDTH",
      "outputs": [
        {
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "LARGE_PAGE_SIZE",
      "outputs": [
        {
          "name": "",
          "type": "uint16"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "AUCTION_ELEMENT_WIDTH",
      "outputs": [
        {
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "ALL_TOKEN_FILTER",
      "outputs": [
        {
          "name": "",
          "type": "uint16"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "exchange",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "tokenFilter",
          "type": "address[]"
        }
      ],
      "name": "getOpenOrderBook",
      "outputs": [
        {
          "name": "",
          "type": "bytes"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "tokenFilter",
          "type": "address[]"
        },
        {
          "name": "previousPageUser",
          "type": "address"
        },
        {
          "name": "previousPageUserOffset",
          "type": "uint16"
        },
        {
          "name": "maxPageSize",
          "type": "uint16"
        }
      ],
      "name": "getOpenOrderBookPaginated",
      "outputs": [
        {
          "name": "elements",
          "type": "bytes"
        },
        {
          "name": "hasNextPage",
          "type": "bool"
        },
        {
          "name": "nextPageUser",
          "type": "address"
        },
        {
          "name": "nextPageUserOffset",
          "type": "uint16"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "tokenFilter",
          "type": "address[]"
        }
      ],
      "name": "getFinalizedOrderBook",
      "outputs": [
        {
          "name": "",
          "type": "bytes"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "tokenFilter",
          "type": "address[]"
        },
        {
          "name": "previousPageUser",
          "type": "address"
        },
        {
          "name": "previousPageUserOffset",
          "type": "uint16"
        },
        {
          "name": "maxPageSize",
          "type": "uint16"
        }
      ],
      "name": "getFinalizedOrderBookPaginated",
      "outputs": [
        {
          "name": "elements",
          "type": "bytes"
        },
        {
          "name": "hasNextPage",
          "type": "bool"
        },
        {
          "name": "nextPageUser",
          "type": "address"
        },
        {
          "name": "nextPageUserOffset",
          "type": "uint16"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "batchIds",
          "type": "uint32[3]"
        },
        {
          "name": "tokenFilter",
          "type": "uint16[]"
        },
        {
          "name": "previousPageUser",
          "type": "address"
        },
        {
          "name": "previousPageUserOffset",
          "type": "uint16"
        },
        {
          "name": "maxPageSize",
          "type": "uint16"
        }
      ],
      "name": "getFilteredOrdersPaginated",
      "outputs": [
        {
          "name": "elements",
          "type": "bytes"
        },
        {
          "name": "hasNextPage",
          "type": "bool"
        },
        {
          "name": "nextPageUser",
          "type": "address"
        },
        {
          "name": "nextPageUserOffset",
          "type": "uint16"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "previousPageUser",
          "type": "address"
        },
        {
          "name": "previousPageUserOffset",
          "type": "uint16"
        },
        {
          "name": "pageSize",
          "type": "uint256"
        }
      ],
      "name": "getEncodedOrdersPaginated",
      "outputs": [
        {
          "name": "",
          "type": "bytes"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "tokenFilter",
          "type": "uint16[]"
        },
        {
          "name": "previousPageUser",
          "type": "address"
        },
        {
          "name": "previousPageUserOffset",
          "type": "uint16"
        },
        {
          "name": "pageSize",
          "type": "uint256"
        }
      ],
      "name": "getEncodedOrdersPaginatedWithTokenFilter",
      "outputs": [
        {
          "name": "",
          "type": "bytes"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "tokenFilter",
          "type": "uint16[]"
        },
        {
          "name": "previousPageUser",
          "type": "address"
        },
        {
          "name": "previousPageUserOffset",
          "type": "uint16"
        },
        {
          "name": "elements",
          "type": "bytes"
        }
      ],
      "name": "writeEncodedOrdersPaginatedWithTokenFilter",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "buyToken",
          "type": "uint16"
        },
        {
          "name": "sellToken",
          "type": "uint16"
        },
        {
          "name": "filter",
          "type": "uint16[]"
        }
      ],
      "name": "matchesTokenFilter",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "element",
          "type": "bytes"
        }
      ],
      "name": "getUser",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "element",
          "type": "bytes"
        }
      ],
      "name": "getSellTokenBalance",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "element",
          "type": "bytes"
        },
        {
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "updateSellTokenBalance",
      "outputs": [
        {
          "name": "",
          "type": "bytes"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "element",
          "type": "bytes"
        }
      ],
      "name": "getBuyToken",
      "outputs": [
        {
          "name": "",
          "type": "uint16"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "element",
          "type": "bytes"
        }
      ],
      "name": "getSellToken",
      "outputs": [
        {
          "name": "",
          "type": "uint16"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "element",
          "type": "bytes"
        }
      ],
      "name": "getValidFrom",
      "outputs": [
        {
          "name": "",
          "type": "uint32"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "element",
          "type": "bytes"
        }
      ],
      "name": "getValidUntil",
      "outputs": [
        {
          "name": "",
          "type": "uint32"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "tokenIds",
          "type": "address[]"
        }
      ],
      "name": "getTokenIdsFromAdresses",
      "outputs": [
        {
          "name": "",
          "type": "uint16[]"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "element",
          "type": "bytes"
        },
        {
          "name": "targetBatchIndex",
          "type": "uint32"
        }
      ],
      "name": "updateSellTokenBalanceForBatchId",
      "outputs": [
        {
          "name": "",
          "type": "bytes"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "tokenId",
          "type": "uint16"
        }
      ],
      "name": "getTokenInfo",
      "outputs": [
        {
          "name": "",
          "type": "address"
        },
        {
          "name": "symbol",
          "type": "string"
        },
        {
          "name": "decimals",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "token",
          "type": "address"
        }
      ],
      "name": "getTokenSymbolString",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "token",
          "type": "address"
        }
      ],
      "name": "getTokenSymbolBytes",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "buffer",
          "type": "bytes"
        },
        {
          "name": "length",
          "type": "uint256"
        }
      ],
      "name": "setLength",
      "outputs": [],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "source",
          "type": "bytes"
        },
        {
          "name": "destination",
          "type": "bytes"
        },
        {
          "name": "offset",
          "type": "uint256"
        }
      ],
      "name": "copyInPlace",
      "outputs": [],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.5.10+commit.5a6ea5b1\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"name\":\"buyToken\",\"type\":\"uint16\"},{\"name\":\"sellToken\",\"type\":\"uint16\"},{\"name\":\"filter\",\"type\":\"uint16[]\"}],\"name\":\"matchesTokenFilter\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint16\"}],\"name\":\"getTokenInfo\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"},{\"name\":\"symbol\",\"type\":\"string\"},{\"name\":\"decimals\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenFilter\",\"type\":\"uint16[]\"},{\"name\":\"previousPageUser\",\"type\":\"address\"},{\"name\":\"previousPageUserOffset\",\"type\":\"uint16\"},{\"name\":\"elements\",\"type\":\"bytes\"}],\"name\":\"writeEncodedOrdersPaginatedWithTokenFilter\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenFilter\",\"type\":\"address[]\"}],\"name\":\"getFinalizedOrderBook\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenIds\",\"type\":\"address[]\"}],\"name\":\"getTokenIdsFromAdresses\",\"outputs\":[{\"name\":\"\",\"type\":\"uint16[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"element\",\"type\":\"bytes\"}],\"name\":\"getSellToken\",\"outputs\":[{\"name\":\"\",\"type\":\"uint16\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"buffer\",\"type\":\"bytes\"},{\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"setLength\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"element\",\"type\":\"bytes\"}],\"name\":\"getSellTokenBalance\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"element\",\"type\":\"bytes\"}],\"name\":\"getValidUntil\",\"outputs\":[{\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"source\",\"type\":\"bytes\"},{\"name\":\"destination\",\"type\":\"bytes\"},{\"name\":\"offset\",\"type\":\"uint256\"}],\"name\":\"copyInPlace\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenFilter\",\"type\":\"address[]\"}],\"name\":\"getOpenOrderBook\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"element\",\"type\":\"bytes\"},{\"name\":\"targetBatchIndex\",\"type\":\"uint32\"}],\"name\":\"updateSellTokenBalanceForBatchId\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getTokenSymbolBytes\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"batchIds\",\"type\":\"uint32[3]\"},{\"name\":\"tokenFilter\",\"type\":\"uint16[]\"},{\"name\":\"previousPageUser\",\"type\":\"address\"},{\"name\":\"previousPageUserOffset\",\"type\":\"uint16\"},{\"name\":\"maxPageSize\",\"type\":\"uint16\"}],\"name\":\"getFilteredOrdersPaginated\",\"outputs\":[{\"name\":\"elements\",\"type\":\"bytes\"},{\"name\":\"hasNextPage\",\"type\":\"bool\"},{\"name\":\"nextPageUser\",\"type\":\"address\"},{\"name\":\"nextPageUserOffset\",\"type\":\"uint16\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"element\",\"type\":\"bytes\"}],\"name\":\"getUser\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenFilter\",\"type\":\"uint16[]\"},{\"name\":\"previousPageUser\",\"type\":\"address\"},{\"name\":\"previousPageUserOffset\",\"type\":\"uint16\"},{\"name\":\"pageSize\",\"type\":\"uint256\"}],\"name\":\"getEncodedOrdersPaginatedWithTokenFilter\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"INDEXED_AUCTION_ELEMENT_WIDTH\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenFilter\",\"type\":\"address[]\"},{\"name\":\"previousPageUser\",\"type\":\"address\"},{\"name\":\"previousPageUserOffset\",\"type\":\"uint16\"},{\"name\":\"maxPageSize\",\"type\":\"uint16\"}],\"name\":\"getFinalizedOrderBookPaginated\",\"outputs\":[{\"name\":\"elements\",\"type\":\"bytes\"},{\"name\":\"hasNextPage\",\"type\":\"bool\"},{\"name\":\"nextPageUser\",\"type\":\"address\"},{\"name\":\"nextPageUserOffset\",\"type\":\"uint16\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"previousPageUser\",\"type\":\"address\"},{\"name\":\"previousPageUserOffset\",\"type\":\"uint16\"},{\"name\":\"pageSize\",\"type\":\"uint256\"}],\"name\":\"getEncodedOrdersPaginated\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"element\",\"type\":\"bytes\"}],\"name\":\"getBuyToken\",\"outputs\":[{\"name\":\"\",\"type\":\"uint16\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getTokenSymbolString\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ADDRESS_WIDTH\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"LARGE_PAGE_SIZE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint16\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"AUCTION_ELEMENT_WIDTH\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"ALL_TOKEN_FILTER\",\"outputs\":[{\"name\":\"\",\"type\":\"uint16\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenFilter\",\"type\":\"address[]\"},{\"name\":\"previousPageUser\",\"type\":\"address\"},{\"name\":\"previousPageUserOffset\",\"type\":\"uint16\"},{\"name\":\"maxPageSize\",\"type\":\"uint16\"}],\"name\":\"getOpenOrderBookPaginated\",\"outputs\":[{\"name\":\"elements\",\"type\":\"bytes\"},{\"name\":\"hasNextPage\",\"type\":\"bool\"},{\"name\":\"nextPageUser\",\"type\":\"address\"},{\"name\":\"nextPageUserOffset\",\"type\":\"uint16\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"element\",\"type\":\"bytes\"}],\"name\":\"getValidFrom\",\"outputs\":[{\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"element\",\"type\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"updateSellTokenBalance\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"exchange\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{\"getEncodedOrdersPaginated(address,uint16,uint256)\":{\"details\":\"View returning byte-encoded sell orders in paginated form. It has the same behavior as BatchExchange.getEncodedUsersPaginated but uses less memory and thus is more gas efficient.\",\"params\":{\"pageSize\":\"uint determining the count of orders to be returned per page\",\"previousPageUser\":\"address of last user received in the previous page (address(0) for first page)\",\"previousPageUserOffset\":\"the number of orders received for the last user on the previous page (0 for first page).\"},\"return\":\"encoded bytes representing a page of orders ordered by (user, index)\"},\"getFilteredOrdersPaginated(uint32[3],uint16[],address,uint16,uint16)\":{\"details\":\"Queries a page in the list of all orders\",\"params\":{\"batchIds\":\"Triple with the following values [maxValidFrom, minValidUntil, sellBalanceTargetBatchIndex] Batched together as we are running out of local variables (Solidity does not compile with Stack too deep error)     - maxValidFrom: all returned orders will have a validFrom <= this value (they were placed at or before that batch)     - minValidUntil all returned orders will have a validUntil >= this value (validity ends at or after that batch)     - sellBalanceTargetBatchIndex the batchIndex at which we are expecting the sellTokenBalance to be valid (e.g. in the current live orderbook we want to include sellBalances that are valid in currentBatch + 1).\",\"maxPageSize\":\"maximum count of elements to be returned per page (same value is used for subqueries on the exchange)\",\"previousPageUser\":\"address taken from nextPageUser return value from last page (address(0) for first page)\",\"previousPageUserOffset\":\"offset taken nextPageUserOffset return value from last page (0 for first page)\",\"tokenFilter\":\"all returned order will have buy *and* sell token from this list (leave empty for \\\"no filter\\\")\"},\"return\":\"encoded bytes representing orders and page information for next page. Result can contain less elements than maxPageSize if remaining gas is low.\"},\"getFinalizedOrderBook(address[])\":{\"details\":\"Queries the orderbook for the auction that is currently being solved\",\"params\":{\"tokenFilter\":\"all returned order will have buy *and* sell token from this list (leave empty for \\\"no filter\\\")\"},\"return\":\"encoded bytes representing orders, maxed at 5000 elements\"},\"getFinalizedOrderBookPaginated(address[],address,uint16,uint16)\":{\"details\":\"Queries a page of the orderbook for the auction that is currently being solved\",\"params\":{\"maxPageSize\":\"count of elements to be returned per page (same value is used for subqueries on the exchange)\",\"previousPageUser\":\"address taken from nextPageUser return value from last page (address(0) for first page)\",\"previousPageUserOffset\":\"offset taken nextPageUserOffset return value from last page (0 for first page)\",\"tokenFilter\":\"all returned order will have buy *and* sell token from this list (leave empty for \\\"no filter\\\")\"},\"return\":\"encoded bytes representing orders and page information for next page\"},\"getOpenOrderBook(address[])\":{\"details\":\"Queries the orderbook for the auction that is still accepting orders\",\"params\":{\"tokenFilter\":\"all returned order will have buy *and* sell token from this list (leave empty for \\\"no filter\\\")\"},\"return\":\"encoded bytes representing orders, maxed at 5000 elements\"},\"getOpenOrderBookPaginated(address[],address,uint16,uint16)\":{\"details\":\"Queries a page of the orderbook for the auction that is still accepting orders\",\"params\":{\"maxPageSize\":\"count of elements to be returned per page (same value is used for subqueries on the exchange)\",\"previousPageUser\":\"address taken from nextPageUser return value from last page (address(0) for first page)\",\"previousPageUserOffset\":\"offset taken nextPageUserOffset return value from last page (0 for first page)\",\"tokenFilter\":\"all returned order will have buy *and* sell token from this list (leave empty for \\\"no filter\\\")\"},\"return\":\"encoded bytes representing orders and page information for next page\"},\"getTokenInfo(uint16)\":{\"details\":\"Queries the token information for the given tokenId. Can handle symbols of type string and bytes (e.g. MKR). Returns \\\"Unknown\\\" as symbol value if it cannot be retrieved and reverts if decimals can not be fetched (to avoid ambiguity with a \\\"valid\\\" value).\",\"params\":{\"tokenId\":\"the ID of a token listed on BatchExchange\"},\"return\":\"the address, symbol and decimals of the token contract\"},\"getTokenSymbolBytes(address)\":{\"details\":\"returns the symbol() of the given address assuming it is returned as a bytes. Reverts if method does not exist or returns data that cannot be casted into a string.\",\"params\":{\"token\":\"the token address from which to receive the symbol\"},\"return\":\"the token's symbol converted into a trimmed (trailing 0 bytes remove) string.\"},\"getTokenSymbolString(address)\":{\"details\":\"returns the symbol() of the given address assuming it is returned as a string. Reverts if method does not exist or returns data that is not a valid string.\",\"params\":{\"token\":\"the token address from which to receive the symbol\"},\"return\":\"the token's symbol\"},\"setLength(bytes,uint256)\":{\"details\":\"Sets the length of the given buffer (truncating any items exceeding the length). Note, that this can lead to memory leakage or undefined behavior if length  is larger than the size that was originally allocated by the buffer.\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/felixleupold/Gnosis/dex-contracts/contracts/BatchExchangeViewer.sol\":\"BatchExchangeViewer\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/felixleupold/Gnosis/dex-contracts/contracts/BatchExchange.sol\":{\"keccak256\":\"0x86ee38a100f345aa50cf92c1acfe46068b4f18ecd39437117292f15574002f69\",\"urls\":[\"bzzr://f368b30c2ffe351b79494cbb883cb4cce413036d86e5f0b355fd72f9c06b64ab\",\"dweb:/ipfs/QmaGRaBKLWJXxYG6JmAcTNSqWUnY1uneBFUVtNrkfyLbXk\"]},\"/Users/felixleupold/Gnosis/dex-contracts/contracts/BatchExchangeViewer.sol\":{\"keccak256\":\"0xbe88a62f214d2fc255ccdfccbc7c398805c8ec4a17bc2512a11d8a7f73160e77\",\"urls\":[\"bzzr://f6b12c6e365e1e38b0aa5fd0fde29dd2975e9d5e357ef9d6f2211fb1a3ebe9ac\",\"dweb:/ipfs/QmYReXmCYZzoy6YWDy7iEECdM7FX4RqNDLUBNYCb7mbxZS\"]},\"/Users/felixleupold/Gnosis/dex-contracts/contracts/EpochTokenLocker.sol\":{\"keccak256\":\"0x6a0e16a44b858c3af0e4e0113af93bf23160f175f36c524f9e753085d8de9978\",\"urls\":[\"bzzr://d6178f1d3533ed733e7eba91d12ce1597711e5b74ad1a4492aed9dc28a8d5c97\",\"dweb:/ipfs/QmeVeD8xeZUfwRi4BCBhrBWCHUDF3tdzwwYDgSNr5T4xPo\"]},\"/Users/felixleupold/Gnosis/dex-contracts/contracts/libraries/TokenConservation.sol\":{\"keccak256\":\"0x674557850e56ef6a716bb1dc528479e290238c592d0764bc7144cc1e811cedea\",\"urls\":[\"bzzr://f6a943472678132ef59cf3b2f131daf28952c1b72cd0e28bda46050dd577a29b\",\"dweb:/ipfs/QmbQsAgu7Fd6i84A98DxXemSnW3UkgccXxNnZLKvtuzHdE\"]},\"@gnosis.pm/owl-token/contracts/5/TokenOWL.sol\":{\"keccak256\":\"0x79dd31b4211c98b57c6c4b85c4902a786c0a1f2549b0481496a322955880c6e4\",\"urls\":[\"bzzr://9004a7707bca62b408542476343c3bd6ca17be5509a3f17e7495ff011495d3c6\",\"dweb:/ipfs/QmNaoSa5P6Py6ZhuqXZeeW6eyG8Hx7FYJFygXPNVBeXSJV\"]},\"@gnosis.pm/solidity-data-structures/contracts/libraries/IdToAddressBiMap.sol\":{\"keccak256\":\"0xde850dc49a037a4acbd792d295afed2222f2d6cd3780240317db2d1ca8ccebc0\",\"urls\":[\"bzzr://900a7be0f54054d59ccb3225f788d77dbf44ea22e6b8d7bd7d295f079c8932f0\",\"dweb:/ipfs/QmNQTeooqchHdMjQfRUmCjwyTUg5PJ4z6he3ym5YUsm8Lm\"]},\"@gnosis.pm/solidity-data-structures/contracts/libraries/IterableAppendOnlySet.sol\":{\"keccak256\":\"0x1447fbecc010c778476e135325a5c8fec70d02d71f736fae8cfccd85ae481241\",\"urls\":[\"bzzr://eea3ac90e8b9e299179c21134dfbf8be2d5ae1276816f2f95f63b836e11e285e\",\"dweb:/ipfs/QmZMn8wVzmr49CXjaix5BMWSNybkDv6BeSQpAFr3btaxuu\"]},\"@gnosis.pm/util-contracts/contracts/GnosisStandardToken.sol\":{\"keccak256\":\"0xdec5028208406e811c449a04e2932f7efeae629388cb6124550b8b048a645556\",\"urls\":[\"bzzr://f3d13a708f543b3ce72745cab321e6daf25d935fd12ba55a4152f1113eb6d5e4\",\"dweb:/ipfs/QmRPMmVo88kdtvo2Yo9xDJrQkpYSUENwK1xSEhZnHhViZ7\"]},\"@gnosis.pm/util-contracts/contracts/Math.sol\":{\"keccak256\":\"0x857768cd0d460e33778dcde29e997b539640bbf37ea23832213b2e5039147ea5\",\"urls\":[\"bzzr://628f7e63a0d6a092aad389b70cc55d6d9c10cd9753f3644d5ea9dc75a3314a8e\",\"dweb:/ipfs/QmP4NxUFWoJjGi8NoZgmzre3MHfRXLtDniwLojH5TVc9LD\"]},\"@gnosis.pm/util-contracts/contracts/Proxy.sol\":{\"keccak256\":\"0x2ff8795110cceafcab1010f157a4dd33e46378bb88fbdc3c313a6f0d62e3444f\",\"urls\":[\"bzzr://66d77feaf648ca17dd620f3e27463b4b6e6031fec7ccd64dfffc4c30bd57b467\",\"dweb:/ipfs/QmQTKFQxUoP37Up8JPeWh47Ta46qAMtWTZ7VnQrGypR67i\"]},\"@gnosis.pm/util-contracts/contracts/Token.sol\":{\"keccak256\":\"0x364778f634c900ed83553e17ef1284bd33fa68a738e668f664b4a0fa675bb586\",\"urls\":[\"bzzr://cb31caaf3364dbf5d688adb10de074284845b142c26d23a47b09ee510dd4a432\",\"dweb:/ipfs/QmVE5i2jcg6aCSjY8asvUwPbrZWtpLyA4uWukQXBbFvqpc\"]},\"@openzeppelin/contracts/drafts/SignedSafeMath.sol\":{\"keccak256\":\"0xf1587a6daea33c93e85fff4e205967183de459159aafcb01b7397fb7ec1f9f77\",\"urls\":[\"bzzr://3fa5ad67118819b61448882baec9ca9964dde65630f574ab3c38841110082923\",\"dweb:/ipfs/QmTaR64X6RsWzXvVGxPCaAoW7ZZ8Fhiii4ddRo7QpQGBrx\"]},\"@openzeppelin/contracts/math/Math.sol\":{\"keccak256\":\"0x4b5aa451e4e8801478708f94b118a7821c0500d676255eaf89fc78c14856ce4e\",\"urls\":[\"bzzr://200d5728b32858918810d8d7a8db1406ee9b157ad5026f050e6d864a696b9080\",\"dweb:/ipfs/QmS6tW81u8E4tvzVfVuqEuMCkdwAozQ6pKJPRBR4JEVmQp\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzzr://292843005e754e752644f767477ec5ad7a1ffc91ddb18c38b8079c62f3993cad\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/token/ERC20/ERC20Detailed.sol\":{\"keccak256\":\"0x4a3a810b7ebe742e897e1fd428b3eeed2196d3acea58eaf9c566ed10d545d2ed\",\"urls\":[\"bzzr://729aefb3f89f616c954a0735f8b4dd8804bdd0351e96f8e904fdb3e78a109b6c\",\"dweb:/ipfs/Qmb9iW7yNuYehB2NfhRMs9TakqbLVQhBhmGMkaDZ5g1Eb4\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzzr://cf2d583b8dce38d0617fdcd65f2fd9f126fe17b7f683b5a515ea9d2762d8b062\",\"dweb:/ipfs/QmQMvwEcPhoRXzbXyrdoeRtvLoifUW9Qh7Luho7bmUPRkc\"]},\"@openzeppelin/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x6f2c9955d65c522b80f4b8792f076512d2df947d2112cbc4d98a4781ed42ede2\",\"urls\":[\"bzzr://d2ff5aadcb697bc27ca3b0f6c40b4998e8cf0a1bd0f761d1df6d5981777841ae\",\"dweb:/ipfs/QmTDkFzKnrpiV1UKnSoiZAHPuguWzokrr4pFbSPvyaSo56\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\",\"urls\":[\"bzzr://4e1d23731da27602b8c552e54fb9976dadf8cf46a8f90a3c8c1b85fe044618b9\",\"dweb:/ipfs/Qmebp4nzPja645c9yXSdJkGq96oU3am3LUnG2K3R7XxyKf\"]},\"@openzeppelin/contracts/utils/SafeCast.sol\":{\"keccak256\":\"0xb7353a57c9e371c85983df8997caf9bb6fa60c3744b34b2bfcf4faa52d06eaec\",\"urls\":[\"bzzr://ca1f1bd047ccacf8ea1b40270c12baab9f1bf9359bbd1cc305e3209e5a812eaa\",\"dweb:/ipfs/QmPaVZM2QRb5JQ5HSRUzrUt6VsknmZE5c4MqH6wuFyxYoA\"]},\"solidity-bytes-utils/contracts/BytesLib.sol\":{\"keccak256\":\"0xd6de53e5467708105d5f6ea98c56882dba0023a6d634cdb3bd03d89ac0d75ae2\",\"urls\":[\"bzzr://5f09be217da67a20ed8f1d3913782ed1ed0c73b03b4216c53ba1ca16585c1a86\",\"dweb:/ipfs/QmVQHbSiWSrFLXaRriAMkYnoNeHJaoqSACdjqoNX7HxJGQ\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b50604051612fdc380380612fdc8339818101604052602081101561003357600080fd5b5051600180546001600160a01b0319166001600160a01b03909216919091179055612f79806100636000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c8063970957bb116100f9578063d08f722811610097578063e9469eb111610071578063e9469eb114611105578063e9d98f0914611122578063f469c116146111de578063fa55171614611282576101c4565b8063d08f7228146110ed578063d615388a146110f5578063d9d80082146110fd576101c4565b8063a94a3df9116100d3578063a94a3df914610f31578063b0c1926514610fed578063b54810fd14611023578063b900dc02146110c7576101c4565b8063970957bb14610d9a5780639e47107514610e5a578063a8ef264214610f13576101c4565b80636d7e99d1116101665780637c40a1b3116101405780637c40a1b314610a8d5780637c66b49314610b2e5780639101074c14610bda578063951b13f114610c00576101c4565b80636d7e99d1146108015780636df5a662146108a557806376137caa14610962576101c4565b8063348ae418116101a2578063348ae4181461049757806334e59fa6146105ad5780633b4c5f1b1461069e57806352b8dfc514610759576101c4565b80630ce0f677146101c95780631c58e7931461029257806329258dee14610346575b600080fd5b61027e600480360360608110156101df57600080fd5b61ffff8235811692602081013590911691810190606081016040820135600160201b81111561020d57600080fd5b82018360208201111561021f57600080fd5b803590602001918460208302840111600160201b8311171561024057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611328945050505050565b604080519115158252519081900360200190f35b6102b3600480360360208110156102a857600080fd5b503561ffff166113b9565b604080516001600160a01b038516815260ff831691810191909152606060208083018281528551928401929092528451608084019186019080838360005b838110156103095781810151838201526020016102f1565b50505050905090810190601f1680156103365780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b6104856004803603608081101561035c57600080fd5b810190602081018135600160201b81111561037657600080fd5b82018360208201111561038857600080fd5b803590602001918460208302840111600160201b831117156103a957600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092956001600160a01b038535169561ffff60208701351695919450925060608101915060400135600160201b81111561041157600080fd5b82018360208201111561042357600080fd5b803590602001918460018302840111600160201b8311171561044457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506116a5945050505050565b60408051918252519081900360200190f35b610538600480360360208110156104ad57600080fd5b810190602081018135600160201b8111156104c757600080fd5b8201836020820111156104d957600080fd5b803590602001918460208302840111600160201b831117156104fa57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611924945050505050565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561057257818101518382015260200161055a565b50505050905090810190601f16801561059f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61064e600480360360208110156105c357600080fd5b810190602081018135600160201b8111156105dd57600080fd5b8201836020820111156105ef57600080fd5b803590602001918460208302840111600160201b8311171561061057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611984945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561068a578181015183820152602001610672565b505050509050019250505060405180910390f35b610742600480360360208110156106b457600080fd5b810190602081018135600160201b8111156106ce57600080fd5b8201836020820111156106e057600080fd5b803590602001918460018302840111600160201b8311171561070157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611a8e945050505050565b6040805161ffff9092168252519081900360200190f35b6107ff6004803603604081101561076f57600080fd5b810190602081018135600160201b81111561078957600080fd5b82018360208201111561079b57600080fd5b803590602001918460018302840111600160201b831117156107bc57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250611ab8915050565b005b6104856004803603602081101561081757600080fd5b810190602081018135600160201b81111561083157600080fd5b82018360208201111561084357600080fd5b803590602001918460018302840111600160201b8311171561086457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611abc945050505050565b610949600480360360208110156108bb57600080fd5b810190602081018135600160201b8111156108d557600080fd5b8201836020820111156108e757600080fd5b803590602001918460018302840111600160201b8311171561090857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611ae6945050505050565b6040805163ffffffff9092168252519081900360200190f35b6107ff6004803603606081101561097857600080fd5b810190602081018135600160201b81111561099257600080fd5b8201836020820111156109a457600080fd5b803590602001918460018302840111600160201b831117156109c557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610a1757600080fd5b820183602082011115610a2957600080fd5b803590602001918460018302840111600160201b83111715610a4a57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250611b10915050565b61053860048036036020811015610aa357600080fd5b810190602081018135600160201b811115610abd57600080fd5b820183602082011115610acf57600080fd5b803590602001918460208302840111600160201b83111715610af057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611b66945050505050565b61053860048036036040811015610b4457600080fd5b810190602081018135600160201b811115610b5e57600080fd5b820183602082011115610b7057600080fd5b803590602001918460018302840111600160201b83111715610b9157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050903563ffffffff169150611b789050565b61053860048036036020811015610bf057600080fd5b50356001600160a01b0316611ead565b610cef600480360360e0811015610c1657600080fd5b810190808060600190600380602002604051908101604052809291908260036020028082843760009201919091525091949392602081019250359050600160201b811115610c6357600080fd5b820183602082011115610c7557600080fd5b803590602001918460208302840111600160201b83111715610c9657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550506001600160a01b0383351693505061ffff602083013581169260400135169050612010565b604051808060200185151515158152602001846001600160a01b03166001600160a01b031681526020018361ffff1661ffff168152602001828103825286818151815260200191508051906020019080838360005b83811015610d5c578181015183820152602001610d44565b50505050905090810190601f168015610d895780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b610e3e60048036036020811015610db057600080fd5b810190602081018135600160201b811115610dca57600080fd5b820183602082011115610ddc57600080fd5b803590602001918460018302840111600160201b83111715610dfd57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061222f945050505050565b604080516001600160a01b039092168252519081900360200190f35b61053860048036036080811015610e7057600080fd5b810190602081018135600160201b811115610e8a57600080fd5b820183602082011115610e9c57600080fd5b803590602001918460208302840111600160201b83111715610ebd57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550505081356001600160a01b0316925050602081013561ffff169060400135612258565b610f1b6122b6565b6040805160ff9092168252519081900360200190f35b610cef60048036036080811015610f4757600080fd5b810190602081018135600160201b811115610f6157600080fd5b820183602082011115610f7357600080fd5b803590602001918460208302840111600160201b83111715610f9457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550506001600160a01b0383351693505061ffff6020830135811692604001351690506122bb565b6105386004803603606081101561100357600080fd5b506001600160a01b038135169061ffff602082013516906040013561238f565b6107426004803603602081101561103957600080fd5b810190602081018135600160201b81111561105357600080fd5b82018360208201111561106557600080fd5b803590602001918460018302840111600160201b8311171561108657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061241d945050505050565b610538600480360360208110156110dd57600080fd5b50356001600160a01b0316612434565b610f1b6124fb565b610742612500565b610f1b612506565b6107426004803603602081101561111b57600080fd5b503561250b565b610cef6004803603608081101561113857600080fd5b810190602081018135600160201b81111561115257600080fd5b82018360208201111561116457600080fd5b803590602001918460208302840111600160201b8311171561118557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550506001600160a01b0383351693505061ffff602083013581169260400135169050612540565b610949600480360360208110156111f457600080fd5b810190602081018135600160201b81111561120e57600080fd5b82018360208201111561122057600080fd5b803590602001918460018302840111600160201b8311171561124157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506125f8945050505050565b6105386004803603604081101561129857600080fd5b810190602081018135600160201b8111156112b257600080fd5b8201836020820111156112c457600080fd5b803590602001918460018302840111600160201b831117156112e557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550509135925061260f915050565b600081516000141561133c575060016113b2565b600080805b84518110156113a2578661ffff1685828151811061135b57fe5b602002602001015161ffff16141561137257600192505b8561ffff1685828151811061138357fe5b602002602001015161ffff16141561139a57600191505b600101611341565b508180156113ad5750805b925050505b9392505050565b60015460408051631788684160e11b815261ffff841660048201529051600092606092849283926001600160a01b031691632f10d082916024808301926020929190829003018186803b15801561140f57600080fd5b505afa158015611423573d6000803e3d6000fd5b505050506040513d602081101561143957600080fd5b50516040805160208181018352600080835283516001600160a01b038616602480830191909152855180830390910181526044909101855291820180516001600160e01b0316635c806e0160e11b178152935182519398509495509330939192909182918083835b602083106114c05780518252601f1990920191602091820191016114a1565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114611520576040519150601f19603f3d011682016040523d82523d6000602084013e611525565b606091505b50509050801561153f5761153882612434565b935061162f565b604080516001600160a01b03841660248083019190915282518083039091018152604490910182526020810180516001600160e01b031663244041d360e21b17815291518151600093309392918291908083835b602083106115b25780518252601f199092019160209182019101611593565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114611612576040519150601f19603f3d011682016040523d82523d6000602084013e611617565b606091505b50509050801561162d5761162a83611ead565b94505b505b8184836001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561166a57600080fd5b505afa15801561167e573d6000803e3d6000fd5b505050506040513d602081101561169457600080fd5b505191989097509095509350505050565b600080607060ff168351816116b657fe5b600154604080516343383ac360e01b81526001600160a01b038a811660048301529490930461ffff811660248501529051909450606093909116916343383ac3916044808301926000929190829003018186803b15801561171657600080fd5b505afa15801561172a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561175357600080fd5b810190808051600160201b81111561176a57600080fd5b8201602081018481111561177d57600080fd5b8151600160201b81118282018710171561179657600080fd5b50909450889350899250600091508190505b8582101561191657600154604080516001600160a01b03868116602483015261ffff881660448084019190915283518084039091018152606490920183526020820180516001600160e01b031663793b8c6d60e01b17815292518251600095606095931693611388939092918291908083835b6020831061183a5780518252601f19909201916020918201910161181b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303818686fa925050503d806000811461189b576040519150601f19603f3d011682016040523d82523d6000602084013e6118a0565b606091505b509150915081156118cd57600195909501946118c28d86838d60708902612664565b60018401935061190f565b86516000965060148481020111611908576118fb6118f68860148681029063ffffffff61295916565b61222f565b945060018301925061190f565b5050611916565b50506117a8565b509998505050505050505050565b606080611936836000806113886122bb565b50508151919250506208b2901161197e5760405162461bcd60e51b8152600401808060200182810382526031815260200180612f146031913960400191505060405180910390fd5b92915050565b60608082516040519080825280602002602001820160405280156119b2578160200160208202803883390190505b50905060005b8351811015611a875760015484516001600160a01b039091169063ef574d23908690849081106119e457fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611a3257600080fd5b505afa158015611a46573d6000803e3d6000fd5b505050506040513d6020811015611a5c57600080fd5b50518251839083908110611a6c57fe5b61ffff909216602092830291909101909101526001016119b8565b5092915050565b60006060611aa5836036600263ffffffff61295916565b90506113b281600063ffffffff612aa616565b9052565b60006060611ad3836014603463ffffffff61295916565b90506113b281600063ffffffff612b4d16565b60006060611afd83603c600463ffffffff61295916565b90506113b281600063ffffffff612bf616565b60005b8351811015611b6057838181518110611b2857fe5b602001015160f81c60f81b8382840181518110611b4157fe5b60200101906001600160f81b031916908160001a905350600101611b13565b50505050565b60608061193683600080611388612540565b60606000611b858461222f565b90506000611b9285611a8e565b60015460408051631788684160e11b815261ffff8416600482015290519293506000926001600160a01b0390921691632f10d08291602480820192602092909190829003018186803b158015611be757600080fd5b505afa158015611bfb573d6000803e3d6000fd5b505050506040513d6020811015611c1157600080fd5b505190506000611c2087611abc565b6001546040805163b3c0afa160e01b81526001600160a01b038881166004830152868116602483015282519495506000948594919091169263b3c0afa19260448082019391829003018186803b158015611c7957600080fd5b505afa158015611c8d573d6000803e3d6000fd5b505050506040513d6040811015611ca357600080fd5b50805160209182015160015460408051637390564760e11b815290519396509194506001600160a01b03169263e720ac8e92600480840193829003018186803b158015611cef57600080fd5b505afa158015611d03573d6000803e3d6000fd5b505050506040513d6020811015611d1957600080fd5b505163ffffffff90811690821610801590611d3f57508763ffffffff168163ffffffff16105b15611d5757611d54838363ffffffff612c9d16565b92505b6001546040805163619f5cfb60e11b81526001600160a01b03898116600483015287811660248301528251600094859492169263c33eb9f6926044808301939192829003018186803b158015611dac57600080fd5b505afa158015611dc0573d6000803e3d6000fd5b505050506040513d6040811015611dd657600080fd5b50805160209182015160015460408051637390564760e11b815290519396509194506001600160a01b03169263e720ac8e92600480840193829003018186803b158015611e2257600080fd5b505afa158015611e36573d6000803e3d6000fd5b505050506040513d6020811015611e4c57600080fd5b505163ffffffff90811690821610801590611e7257508963ffffffff168163ffffffff16105b15611e9457611e91611e848684612cf7565b869063ffffffff612d0d16565b94505b611e9e8b8661260f565b9b9a5050505050505050505050565b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b1781529151815160609360009385936001600160a01b03881693919290918291908083835b60208310611f165780518252601f199092019160209182019101611ef7565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114611f76576040519150601f19603f3d011682016040523d82523d6000602084013e611f7b565b606091505b509150915081611fc6576040805162461bcd60e51b815260206004820152601160248201527010d85b9b9bdd0819d95d081cde5b589bdb607a1b604482015290519081900360640190fd5b60005b815181101561200857818181518110611fde57fe5b01602001516001600160f81b03191661200057611ffb8282611ab8565b612008565b600101611fc9565b509392505050565b60606000806000607060020160ff168561ffff16026040519080825280601f01601f19166020018201604052801561204f576020820181803883390190505b50935061205d846000611ab8565b6040805161ffff8716607002808252601f19601f82011682016020019092526060918015612092576020820181803883390190505b5090508792508691506001935060005a90505b8480156120b75750806003025a600502115b15612220575a905060006120cd8b8686866116a5565b61ffff891681149650905060005b818161ffff1610156122195760606120fc85607061ffff8516810290612959565b905061210f818f60026020020151611b78565b9050600061211c8261222f565b9050876001600160a01b0316816001600160a01b031614156121435760018701965061214b565b600196508097505b612154826125f8565b8f5163ffffffff918216911610801590612189575061217282611ae6565b63ffffffff168f6001602002015163ffffffff1611155b156121f057895161219e908b90607201611ab8565b89516121b19083908c9060711901611b10565b604080516001600160f01b03196000198a0160f01b1660208201528151808203600201815260229091019091528a516121f091908c9060011901611b10565b895161ffff60728d02161161220f575060019750612223945050505050565b50506001016120db565b50506120a5565b50505b95509550955095915050565b600060606122458383601463ffffffff61295916565b90506113b281600063ffffffff612d4f16565b606080607060ff1683026040519080825280601f01601f19166020018201604052801561228c576020820181803883390190505b509050600061229d878787856116a5565b90506122ac8260708302611ab8565b5095945050505050565b607281565b6060600080600080600160009054906101000a90046001600160a01b03166001600160a01b031663e720ac8e6040518163ffffffff1660e01b815260040160206040518083038186803b15801561231157600080fd5b505afa158015612325573d6000803e3d6000fd5b505050506040513d602081101561233b57600080fd5b50516040805160608101825263ffffffff60001984018116808352602083015283169181019190915290915061237c906123748b611984565b8a8a8a612010565b929c919b50995090975095505050505050565b6060612415600080548060200260200160405190810160405280929190818152602001828054801561240857602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116123cf5790505b5050505050858585612258565b949350505050565b60006060611aa5836034600263ffffffff61295916565b6060816001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561246f57600080fd5b505afa158015612483573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156124ac57600080fd5b810190808051600160201b8111156124c357600080fd5b820160208101848111156124d657600080fd5b8151600160201b8111828201871017156124ef57600080fd5b50909695505050505050565b601481565b61138881565b607081565b6000818154811061251857fe5b9060005260206000209060109182820401919006600202915054906101000a900461ffff1681565b6060600080600080600160009054906101000a90046001600160a01b03166001600160a01b031663e720ac8e6040518163ffffffff1660e01b815260040160206040518083038186803b15801561259657600080fd5b505afa1580156125aa573d6000803e3d6000fd5b505050506040513d60208110156125c057600080fd5b50516040805160608101825263ffffffff808416808352602083015260018401169181019190915290915061237c906123748b611984565b60006060611afd836038600463ffffffff61295916565b60606113b2612627846034603c63ffffffff61295916565b604080516020808201879052825180830390910181529082019091526126589081876000601463ffffffff61295916565b9063ffffffff612dff16565b60008060008060008060008980602001905160e081101561268457600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050965096509650965096509650965061271e8b60405160200180826001600160a01b03166001600160a01b031660601b81526014019150506040516020818303038152906040528a8a611b10565b61272987878e611328565b1561290b57600081830390506000600160009054906101000a90046001600160a01b03166001600160a01b031663d4fac45d8e600160009054906101000a90046001600160a01b03166001600160a01b0316632f10d0828c6040518263ffffffff1660e01b8152600401808261ffff1661ffff16815260200191505060206040518083038186803b1580156127bd57600080fd5b505afa1580156127d1573d6000803e3d6000fd5b505050506040513d60208110156127e757600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039384166004820152929091166024830152516044808301926020929190829003018186803b15801561283757600080fd5b505afa15801561284b573d6000803e3d6000fd5b505050506040513d602081101561286157600080fd5b505160408051602081018390526001600160f01b031960f08d811b8216838501528c901b1660428201526001600160e01b031960e08b811b821660448401528a901b1660488201526fffffffffffffffffffffffffffffffff19608089811b8216604c84015288811b8216605c808501919091529087901b909116606c83015282518083039091018152607c909101909152909150612904908c60148d01611b10565b505061294b565b60145b607081101561294957600060f81b8a8a83018151811061292a57fe5b60200101906001600160f81b031916908160001a90535060010161290e565b505b505050505050505050505050565b60608182601f0110156129a4576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b8282840110156129ec576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b81830184511015612a38576040805162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b604482015290519081900360640190fd5b606082158015612a5357604051915060208201604052612a9d565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612a8c578051835260209283019201612a74565b5050858452601f01601f1916604052505b50949350505050565b600081826002011015612af4576040805162461bcd60e51b8152602060048201526011602482015270746f55696e7431365f6f766572666c6f7760781b604482015290519081900360640190fd5b8160020183511015612b44576040805162461bcd60e51b8152602060048201526014602482015273746f55696e7431365f6f75744f66426f756e647360601b604482015290519081900360640190fd5b50016002015190565b600081826020011015612b9c576040805162461bcd60e51b8152602060048201526012602482015271746f55696e743235365f6f766572666c6f7760701b604482015290519081900360640190fd5b8160200183511015612bed576040805162461bcd60e51b8152602060048201526015602482015274746f55696e743235365f6f75744f66426f756e647360581b604482015290519081900360640190fd5b50016020015190565b600081826004011015612c44576040805162461bcd60e51b8152602060048201526011602482015270746f55696e7433325f6f766572666c6f7760781b604482015290519081900360640190fd5b8160040183511015612c94576040805162461bcd60e51b8152602060048201526014602482015273746f55696e7433325f6f75744f66426f756e647360601b604482015290519081900360640190fd5b50016004015190565b6000828201838110156113b2576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000818310612d0657816113b2565b5090919050565b60006113b283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612e7c565b600081826014011015612d9e576040805162461bcd60e51b8152602060048201526012602482015271746f416464726573735f6f766572666c6f7760701b604482015290519081900360640190fd5b8160140183511015612def576040805162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b604482015290519081900360640190fd5b500160200151600160601b900490565b6060806040519050835180825260208201818101602087015b81831015612e30578051835260209283019201612e18565b50855184518101855292509050808201602086015b81831015612e5d578051835260209283019201612e45565b508651929092011591909101601f01601f191660405250905092915050565b60008184841115612f0b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612ed0578181015183820152602001612eb8565b50505050905090810190601f168015612efd5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50505090039056fe4f72646572626f6f6b20746f6f206c617267652c2075736520706167696e6174656420766965772066756e6374696f6e73a265627a7a723058209ca08ce76ddf3445c995fd7faf0e9cbc270e0bb96956ee0aae9c661de4b15ae764736f6c634300050a0032",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101c45760003560e01c8063970957bb116100f9578063d08f722811610097578063e9469eb111610071578063e9469eb114611105578063e9d98f0914611122578063f469c116146111de578063fa55171614611282576101c4565b8063d08f7228146110ed578063d615388a146110f5578063d9d80082146110fd576101c4565b8063a94a3df9116100d3578063a94a3df914610f31578063b0c1926514610fed578063b54810fd14611023578063b900dc02146110c7576101c4565b8063970957bb14610d9a5780639e47107514610e5a578063a8ef264214610f13576101c4565b80636d7e99d1116101665780637c40a1b3116101405780637c40a1b314610a8d5780637c66b49314610b2e5780639101074c14610bda578063951b13f114610c00576101c4565b80636d7e99d1146108015780636df5a662146108a557806376137caa14610962576101c4565b8063348ae418116101a2578063348ae4181461049757806334e59fa6146105ad5780633b4c5f1b1461069e57806352b8dfc514610759576101c4565b80630ce0f677146101c95780631c58e7931461029257806329258dee14610346575b600080fd5b61027e600480360360608110156101df57600080fd5b61ffff8235811692602081013590911691810190606081016040820135600160201b81111561020d57600080fd5b82018360208201111561021f57600080fd5b803590602001918460208302840111600160201b8311171561024057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611328945050505050565b604080519115158252519081900360200190f35b6102b3600480360360208110156102a857600080fd5b503561ffff166113b9565b604080516001600160a01b038516815260ff831691810191909152606060208083018281528551928401929092528451608084019186019080838360005b838110156103095781810151838201526020016102f1565b50505050905090810190601f1680156103365780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b6104856004803603608081101561035c57600080fd5b810190602081018135600160201b81111561037657600080fd5b82018360208201111561038857600080fd5b803590602001918460208302840111600160201b831117156103a957600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092956001600160a01b038535169561ffff60208701351695919450925060608101915060400135600160201b81111561041157600080fd5b82018360208201111561042357600080fd5b803590602001918460018302840111600160201b8311171561044457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506116a5945050505050565b60408051918252519081900360200190f35b610538600480360360208110156104ad57600080fd5b810190602081018135600160201b8111156104c757600080fd5b8201836020820111156104d957600080fd5b803590602001918460208302840111600160201b831117156104fa57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611924945050505050565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561057257818101518382015260200161055a565b50505050905090810190601f16801561059f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61064e600480360360208110156105c357600080fd5b810190602081018135600160201b8111156105dd57600080fd5b8201836020820111156105ef57600080fd5b803590602001918460208302840111600160201b8311171561061057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611984945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561068a578181015183820152602001610672565b505050509050019250505060405180910390f35b610742600480360360208110156106b457600080fd5b810190602081018135600160201b8111156106ce57600080fd5b8201836020820111156106e057600080fd5b803590602001918460018302840111600160201b8311171561070157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611a8e945050505050565b6040805161ffff9092168252519081900360200190f35b6107ff6004803603604081101561076f57600080fd5b810190602081018135600160201b81111561078957600080fd5b82018360208201111561079b57600080fd5b803590602001918460018302840111600160201b831117156107bc57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250611ab8915050565b005b6104856004803603602081101561081757600080fd5b810190602081018135600160201b81111561083157600080fd5b82018360208201111561084357600080fd5b803590602001918460018302840111600160201b8311171561086457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611abc945050505050565b610949600480360360208110156108bb57600080fd5b810190602081018135600160201b8111156108d557600080fd5b8201836020820111156108e757600080fd5b803590602001918460018302840111600160201b8311171561090857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611ae6945050505050565b6040805163ffffffff9092168252519081900360200190f35b6107ff6004803603606081101561097857600080fd5b810190602081018135600160201b81111561099257600080fd5b8201836020820111156109a457600080fd5b803590602001918460018302840111600160201b831117156109c557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610a1757600080fd5b820183602082011115610a2957600080fd5b803590602001918460018302840111600160201b83111715610a4a57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250611b10915050565b61053860048036036020811015610aa357600080fd5b810190602081018135600160201b811115610abd57600080fd5b820183602082011115610acf57600080fd5b803590602001918460208302840111600160201b83111715610af057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611b66945050505050565b61053860048036036040811015610b4457600080fd5b810190602081018135600160201b811115610b5e57600080fd5b820183602082011115610b7057600080fd5b803590602001918460018302840111600160201b83111715610b9157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050903563ffffffff169150611b789050565b61053860048036036020811015610bf057600080fd5b50356001600160a01b0316611ead565b610cef600480360360e0811015610c1657600080fd5b810190808060600190600380602002604051908101604052809291908260036020028082843760009201919091525091949392602081019250359050600160201b811115610c6357600080fd5b820183602082011115610c7557600080fd5b803590602001918460208302840111600160201b83111715610c9657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550506001600160a01b0383351693505061ffff602083013581169260400135169050612010565b604051808060200185151515158152602001846001600160a01b03166001600160a01b031681526020018361ffff1661ffff168152602001828103825286818151815260200191508051906020019080838360005b83811015610d5c578181015183820152602001610d44565b50505050905090810190601f168015610d895780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b610e3e60048036036020811015610db057600080fd5b810190602081018135600160201b811115610dca57600080fd5b820183602082011115610ddc57600080fd5b803590602001918460018302840111600160201b83111715610dfd57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061222f945050505050565b604080516001600160a01b039092168252519081900360200190f35b61053860048036036080811015610e7057600080fd5b810190602081018135600160201b811115610e8a57600080fd5b820183602082011115610e9c57600080fd5b803590602001918460208302840111600160201b83111715610ebd57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550505081356001600160a01b0316925050602081013561ffff169060400135612258565b610f1b6122b6565b6040805160ff9092168252519081900360200190f35b610cef60048036036080811015610f4757600080fd5b810190602081018135600160201b811115610f6157600080fd5b820183602082011115610f7357600080fd5b803590602001918460208302840111600160201b83111715610f9457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550506001600160a01b0383351693505061ffff6020830135811692604001351690506122bb565b6105386004803603606081101561100357600080fd5b506001600160a01b038135169061ffff602082013516906040013561238f565b6107426004803603602081101561103957600080fd5b810190602081018135600160201b81111561105357600080fd5b82018360208201111561106557600080fd5b803590602001918460018302840111600160201b8311171561108657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061241d945050505050565b610538600480360360208110156110dd57600080fd5b50356001600160a01b0316612434565b610f1b6124fb565b610742612500565b610f1b612506565b6107426004803603602081101561111b57600080fd5b503561250b565b610cef6004803603608081101561113857600080fd5b810190602081018135600160201b81111561115257600080fd5b82018360208201111561116457600080fd5b803590602001918460208302840111600160201b8311171561118557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550506001600160a01b0383351693505061ffff602083013581169260400135169050612540565b610949600480360360208110156111f457600080fd5b810190602081018135600160201b81111561120e57600080fd5b82018360208201111561122057600080fd5b803590602001918460018302840111600160201b8311171561124157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506125f8945050505050565b6105386004803603604081101561129857600080fd5b810190602081018135600160201b8111156112b257600080fd5b8201836020820111156112c457600080fd5b803590602001918460018302840111600160201b831117156112e557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550509135925061260f915050565b600081516000141561133c575060016113b2565b600080805b84518110156113a2578661ffff1685828151811061135b57fe5b602002602001015161ffff16141561137257600192505b8561ffff1685828151811061138357fe5b602002602001015161ffff16141561139a57600191505b600101611341565b508180156113ad5750805b925050505b9392505050565b60015460408051631788684160e11b815261ffff841660048201529051600092606092849283926001600160a01b031691632f10d082916024808301926020929190829003018186803b15801561140f57600080fd5b505afa158015611423573d6000803e3d6000fd5b505050506040513d602081101561143957600080fd5b50516040805160208181018352600080835283516001600160a01b038616602480830191909152855180830390910181526044909101855291820180516001600160e01b0316635c806e0160e11b178152935182519398509495509330939192909182918083835b602083106114c05780518252601f1990920191602091820191016114a1565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114611520576040519150601f19603f3d011682016040523d82523d6000602084013e611525565b606091505b50509050801561153f5761153882612434565b935061162f565b604080516001600160a01b03841660248083019190915282518083039091018152604490910182526020810180516001600160e01b031663244041d360e21b17815291518151600093309392918291908083835b602083106115b25780518252601f199092019160209182019101611593565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114611612576040519150601f19603f3d011682016040523d82523d6000602084013e611617565b606091505b50509050801561162d5761162a83611ead565b94505b505b8184836001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561166a57600080fd5b505afa15801561167e573d6000803e3d6000fd5b505050506040513d602081101561169457600080fd5b505191989097509095509350505050565b600080607060ff168351816116b657fe5b600154604080516343383ac360e01b81526001600160a01b038a811660048301529490930461ffff811660248501529051909450606093909116916343383ac3916044808301926000929190829003018186803b15801561171657600080fd5b505afa15801561172a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561175357600080fd5b810190808051600160201b81111561176a57600080fd5b8201602081018481111561177d57600080fd5b8151600160201b81118282018710171561179657600080fd5b50909450889350899250600091508190505b8582101561191657600154604080516001600160a01b03868116602483015261ffff881660448084019190915283518084039091018152606490920183526020820180516001600160e01b031663793b8c6d60e01b17815292518251600095606095931693611388939092918291908083835b6020831061183a5780518252601f19909201916020918201910161181b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303818686fa925050503d806000811461189b576040519150601f19603f3d011682016040523d82523d6000602084013e6118a0565b606091505b509150915081156118cd57600195909501946118c28d86838d60708902612664565b60018401935061190f565b86516000965060148481020111611908576118fb6118f68860148681029063ffffffff61295916565b61222f565b945060018301925061190f565b5050611916565b50506117a8565b509998505050505050505050565b606080611936836000806113886122bb565b50508151919250506208b2901161197e5760405162461bcd60e51b8152600401808060200182810382526031815260200180612f146031913960400191505060405180910390fd5b92915050565b60608082516040519080825280602002602001820160405280156119b2578160200160208202803883390190505b50905060005b8351811015611a875760015484516001600160a01b039091169063ef574d23908690849081106119e457fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611a3257600080fd5b505afa158015611a46573d6000803e3d6000fd5b505050506040513d6020811015611a5c57600080fd5b50518251839083908110611a6c57fe5b61ffff909216602092830291909101909101526001016119b8565b5092915050565b60006060611aa5836036600263ffffffff61295916565b90506113b281600063ffffffff612aa616565b9052565b60006060611ad3836014603463ffffffff61295916565b90506113b281600063ffffffff612b4d16565b60006060611afd83603c600463ffffffff61295916565b90506113b281600063ffffffff612bf616565b60005b8351811015611b6057838181518110611b2857fe5b602001015160f81c60f81b8382840181518110611b4157fe5b60200101906001600160f81b031916908160001a905350600101611b13565b50505050565b60608061193683600080611388612540565b60606000611b858461222f565b90506000611b9285611a8e565b60015460408051631788684160e11b815261ffff8416600482015290519293506000926001600160a01b0390921691632f10d08291602480820192602092909190829003018186803b158015611be757600080fd5b505afa158015611bfb573d6000803e3d6000fd5b505050506040513d6020811015611c1157600080fd5b505190506000611c2087611abc565b6001546040805163b3c0afa160e01b81526001600160a01b038881166004830152868116602483015282519495506000948594919091169263b3c0afa19260448082019391829003018186803b158015611c7957600080fd5b505afa158015611c8d573d6000803e3d6000fd5b505050506040513d6040811015611ca357600080fd5b50805160209182015160015460408051637390564760e11b815290519396509194506001600160a01b03169263e720ac8e92600480840193829003018186803b158015611cef57600080fd5b505afa158015611d03573d6000803e3d6000fd5b505050506040513d6020811015611d1957600080fd5b505163ffffffff90811690821610801590611d3f57508763ffffffff168163ffffffff16105b15611d5757611d54838363ffffffff612c9d16565b92505b6001546040805163619f5cfb60e11b81526001600160a01b03898116600483015287811660248301528251600094859492169263c33eb9f6926044808301939192829003018186803b158015611dac57600080fd5b505afa158015611dc0573d6000803e3d6000fd5b505050506040513d6040811015611dd657600080fd5b50805160209182015160015460408051637390564760e11b815290519396509194506001600160a01b03169263e720ac8e92600480840193829003018186803b158015611e2257600080fd5b505afa158015611e36573d6000803e3d6000fd5b505050506040513d6020811015611e4c57600080fd5b505163ffffffff90811690821610801590611e7257508963ffffffff168163ffffffff16105b15611e9457611e91611e848684612cf7565b869063ffffffff612d0d16565b94505b611e9e8b8661260f565b9b9a5050505050505050505050565b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b1781529151815160609360009385936001600160a01b03881693919290918291908083835b60208310611f165780518252601f199092019160209182019101611ef7565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114611f76576040519150601f19603f3d011682016040523d82523d6000602084013e611f7b565b606091505b509150915081611fc6576040805162461bcd60e51b815260206004820152601160248201527010d85b9b9bdd0819d95d081cde5b589bdb607a1b604482015290519081900360640190fd5b60005b815181101561200857818181518110611fde57fe5b01602001516001600160f81b03191661200057611ffb8282611ab8565b612008565b600101611fc9565b509392505050565b60606000806000607060020160ff168561ffff16026040519080825280601f01601f19166020018201604052801561204f576020820181803883390190505b50935061205d846000611ab8565b6040805161ffff8716607002808252601f19601f82011682016020019092526060918015612092576020820181803883390190505b5090508792508691506001935060005a90505b8480156120b75750806003025a600502115b15612220575a905060006120cd8b8686866116a5565b61ffff891681149650905060005b818161ffff1610156122195760606120fc85607061ffff8516810290612959565b905061210f818f60026020020151611b78565b9050600061211c8261222f565b9050876001600160a01b0316816001600160a01b031614156121435760018701965061214b565b600196508097505b612154826125f8565b8f5163ffffffff918216911610801590612189575061217282611ae6565b63ffffffff168f6001602002015163ffffffff1611155b156121f057895161219e908b90607201611ab8565b89516121b19083908c9060711901611b10565b604080516001600160f01b03196000198a0160f01b1660208201528151808203600201815260229091019091528a516121f091908c9060011901611b10565b895161ffff60728d02161161220f575060019750612223945050505050565b50506001016120db565b50506120a5565b50505b95509550955095915050565b600060606122458383601463ffffffff61295916565b90506113b281600063ffffffff612d4f16565b606080607060ff1683026040519080825280601f01601f19166020018201604052801561228c576020820181803883390190505b509050600061229d878787856116a5565b90506122ac8260708302611ab8565b5095945050505050565b607281565b6060600080600080600160009054906101000a90046001600160a01b03166001600160a01b031663e720ac8e6040518163ffffffff1660e01b815260040160206040518083038186803b15801561231157600080fd5b505afa158015612325573d6000803e3d6000fd5b505050506040513d602081101561233b57600080fd5b50516040805160608101825263ffffffff60001984018116808352602083015283169181019190915290915061237c906123748b611984565b8a8a8a612010565b929c919b50995090975095505050505050565b6060612415600080548060200260200160405190810160405280929190818152602001828054801561240857602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116123cf5790505b5050505050858585612258565b949350505050565b60006060611aa5836034600263ffffffff61295916565b6060816001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561246f57600080fd5b505afa158015612483573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156124ac57600080fd5b810190808051600160201b8111156124c357600080fd5b820160208101848111156124d657600080fd5b8151600160201b8111828201871017156124ef57600080fd5b50909695505050505050565b601481565b61138881565b607081565b6000818154811061251857fe5b9060005260206000209060109182820401919006600202915054906101000a900461ffff1681565b6060600080600080600160009054906101000a90046001600160a01b03166001600160a01b031663e720ac8e6040518163ffffffff1660e01b815260040160206040518083038186803b15801561259657600080fd5b505afa1580156125aa573d6000803e3d6000fd5b505050506040513d60208110156125c057600080fd5b50516040805160608101825263ffffffff808416808352602083015260018401169181019190915290915061237c906123748b611984565b60006060611afd836038600463ffffffff61295916565b60606113b2612627846034603c63ffffffff61295916565b604080516020808201879052825180830390910181529082019091526126589081876000601463ffffffff61295916565b9063ffffffff612dff16565b60008060008060008060008980602001905160e081101561268457600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050965096509650965096509650965061271e8b60405160200180826001600160a01b03166001600160a01b031660601b81526014019150506040516020818303038152906040528a8a611b10565b61272987878e611328565b1561290b57600081830390506000600160009054906101000a90046001600160a01b03166001600160a01b031663d4fac45d8e600160009054906101000a90046001600160a01b03166001600160a01b0316632f10d0828c6040518263ffffffff1660e01b8152600401808261ffff1661ffff16815260200191505060206040518083038186803b1580156127bd57600080fd5b505afa1580156127d1573d6000803e3d6000fd5b505050506040513d60208110156127e757600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039384166004820152929091166024830152516044808301926020929190829003018186803b15801561283757600080fd5b505afa15801561284b573d6000803e3d6000fd5b505050506040513d602081101561286157600080fd5b505160408051602081018390526001600160f01b031960f08d811b8216838501528c901b1660428201526001600160e01b031960e08b811b821660448401528a901b1660488201526fffffffffffffffffffffffffffffffff19608089811b8216604c84015288811b8216605c808501919091529087901b909116606c83015282518083039091018152607c909101909152909150612904908c60148d01611b10565b505061294b565b60145b607081101561294957600060f81b8a8a83018151811061292a57fe5b60200101906001600160f81b031916908160001a90535060010161290e565b505b505050505050505050505050565b60608182601f0110156129a4576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b8282840110156129ec576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b81830184511015612a38576040805162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b604482015290519081900360640190fd5b606082158015612a5357604051915060208201604052612a9d565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612a8c578051835260209283019201612a74565b5050858452601f01601f1916604052505b50949350505050565b600081826002011015612af4576040805162461bcd60e51b8152602060048201526011602482015270746f55696e7431365f6f766572666c6f7760781b604482015290519081900360640190fd5b8160020183511015612b44576040805162461bcd60e51b8152602060048201526014602482015273746f55696e7431365f6f75744f66426f756e647360601b604482015290519081900360640190fd5b50016002015190565b600081826020011015612b9c576040805162461bcd60e51b8152602060048201526012602482015271746f55696e743235365f6f766572666c6f7760701b604482015290519081900360640190fd5b8160200183511015612bed576040805162461bcd60e51b8152602060048201526015602482015274746f55696e743235365f6f75744f66426f756e647360581b604482015290519081900360640190fd5b50016020015190565b600081826004011015612c44576040805162461bcd60e51b8152602060048201526011602482015270746f55696e7433325f6f766572666c6f7760781b604482015290519081900360640190fd5b8160040183511015612c94576040805162461bcd60e51b8152602060048201526014602482015273746f55696e7433325f6f75744f66426f756e647360601b604482015290519081900360640190fd5b50016004015190565b6000828201838110156113b2576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000818310612d0657816113b2565b5090919050565b60006113b283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612e7c565b600081826014011015612d9e576040805162461bcd60e51b8152602060048201526012602482015271746f416464726573735f6f766572666c6f7760701b604482015290519081900360640190fd5b8160140183511015612def576040805162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b604482015290519081900360640190fd5b500160200151600160601b900490565b6060806040519050835180825260208201818101602087015b81831015612e30578051835260209283019201612e18565b50855184518101855292509050808201602086015b81831015612e5d578051835260209283019201612e45565b508651929092011591909101601f01601f191660405250905092915050565b60008184841115612f0b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612ed0578181015183820152602001612eb8565b50505050905090810190601f168015612efd5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50505090039056fe4f72646572626f6f6b20746f6f206c617267652c2075736520706167696e6174656420766965772066756e6374696f6e73a265627a7a723058209ca08ce76ddf3445c995fd7faf0e9cbc270e0bb96956ee0aae9c661de4b15ae764736f6c634300050a0032",
  "sourceMap": "227:21762:1:-;;;848:84;8:9:-1;5:2;;;30:1;27;20:12;5:2;848:84:1;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;848:84:1;901:13;:24;;-1:-1:-1;;;;;;901:24:1;-1:-1:-1;;;;;901:24:1;;;;;;;;;227:21762;;;-1:-1:-1;227:21762:1;;",
  "deployedSourceMap": "227:21762:1:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;227:21762:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13110:666;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13110:666:1;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;13110:666:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;13110:666:1;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;13110:666:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;13110:666:1;;-1:-1:-1;13110:666:1;;-1:-1:-1;;;;;13110:666:1:i;:::-;;;;;;;;;;;;;;;;;;17183:905;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17183:905:1;;;;:::i;:::-;;;;-1:-1:-1;;;;;17183:905:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;17183:905:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11380:1724;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;11380:1724:1;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;11380:1724:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11380:1724:1;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;11380:1724:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;11380:1724:1;;-1:-1:-1;;;;;11380:1724:1;;;;;;;;;;;;;-1:-1:-1;11380:1724:1;-1:-1:-1;11380:1724:1;;;;-1:-1:-1;11380:1724:1;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;11380:1724:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11380:1724:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;11380:1724:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;11380:1724:1;;-1:-1:-1;11380:1724:1;;-1:-1:-1;;;;;11380:1724:1:i;:::-;;;;;;;;;;;;;;;;3313:425;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3313:425:1;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;3313:425:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3313:425:1;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;3313:425:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3313:425:1;;-1:-1:-1;3313:425:1;;-1:-1:-1;;;;;3313:425:1:i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3313:425:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15132:350;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15132:350:1;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;15132:350:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;15132:350:1;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;15132:350:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;15132:350:1;;-1:-1:-1;15132:350:1;;-1:-1:-1;;;;;15132:350:1:i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;15132:350:1;;;;;;;;;;;;;;;;;14618:165;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14618:165:1;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;14618:165:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;14618:165:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;14618:165:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;14618:165:1;;-1:-1:-1;14618:165:1;;-1:-1:-1;;;;;14618:165:1:i;:::-;;;;;;;;;;;;;;;;;;;19688:139;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19688:139:1;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;19688:139:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;19688:139:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;19688:139:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;19688:139:1;;-1:-1:-1;;19688:139:1;;;-1:-1:-1;19688:139:1;;-1:-1:-1;;19688:139:1:i;:::-;;13961:186;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13961:186:1;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;13961:186:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;13961:186:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;13961:186:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;13961:186:1;;-1:-1:-1;13961:186:1;;-1:-1:-1;;;;;13961:186:1:i;14960:166::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14960:166:1;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;14960:166:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;14960:166:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;14960:166:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;14960:166:1;;-1:-1:-1;14960:166:1;;-1:-1:-1;;;;;14960:166:1:i;:::-;;;;;;;;;;;;;;;;;;;19833:246;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19833:246:1;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;19833:246:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;19833:246:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;19833:246:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;19833:246:1;;;;;;;;-1:-1:-1;19833:246:1;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;19833:246:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;19833:246:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;19833:246:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;19833:246:1;;-1:-1:-1;;19833:246:1;;;-1:-1:-1;19833:246:1;;-1:-1:-1;;19833:246:1:i;1224:415::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1224:415:1;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;1224:415:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1224:415:1;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;1224:415:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1224:415:1;;-1:-1:-1;1224:415:1;;-1:-1:-1;;;;;1224:415:1:i;15488:1258::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15488:1258:1;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;15488:1258:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;15488:1258:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;15488:1258:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;15488:1258:1;;-1:-1:-1;;;15488:1258:1;;;;;-1:-1:-1;15488:1258:1;;-1:-1:-1;15488:1258:1:i;18893:521::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18893:521:1;-1:-1:-1;;;;;18893:521:1;;:::i;6570:3275::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;6570:3275:1;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6570:3275:1;;;;;;;;-1:-1:-1;6570:3275:1;;-1:-1:-1;;;;5:28;;2:2;;;46:1;43;36:12;2:2;6570:3275:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6570:3275:1;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6570:3275:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6570:3275:1;;-1:-1:-1;;;;;;;6570:3275:1;;;;-1:-1:-1;;6570:3275:1;;;;;;;;;;;;;-1:-1:-1;6570:3275:1;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6570:3275:1;-1:-1:-1;;;;;6570:3275:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6570:3275:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13782:173;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13782:173:1;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;13782:173:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;13782:173:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;13782:173:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;13782:173:1;;-1:-1:-1;13782:173:1;;-1:-1:-1;;;;;13782:173:1:i;:::-;;;;-1:-1:-1;;;;;13782:173:1;;;;;;;;;;;;;;10777:597;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;10777:597:1;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;10777:597:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10777:597:1;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;10777:597:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10777:597:1;;-1:-1:-1;;;10777:597:1;;-1:-1:-1;;;;;10777:597:1;;-1:-1:-1;;10777:597:1;;;;;;;;;;;:::i;450:79::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4409:720;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;4409:720:1;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;4409:720:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4409:720:1;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;4409:720:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;4409:720:1;;-1:-1:-1;;;;;;;4409:720:1;;;;-1:-1:-1;;4409:720:1;;;;;;;;;;;;;-1:-1:-1;4409:720:1;:::i;10462:309::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10462:309:1;;;;;;;;;;;;;;;:::i;14448:164::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14448:164:1;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;14448:164:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;14448:164:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;14448:164:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;14448:164:1;;-1:-1:-1;14448:164:1;;-1:-1:-1;;;;;14448:164:1:i;18390:134::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18390:134:1;-1:-1:-1;;;;;18390:134:1;;:::i;535:40::-;;;:::i;581:45::-;;;:::i;325:49::-;;;:::i;775:32::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;775:32:1;;:::i;2310:711::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;2310:711:1;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;2310:711:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2310:711:1;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;2310:711:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2310:711:1;;-1:-1:-1;;;;;;;2310:711:1;;;;-1:-1:-1;;2310:711:1;;;;;;;;;;;;;-1:-1:-1;2310:711:1;:::i;14789:165::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14789:165:1;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;14789:165:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;14789:165:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;14789:165:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;14789:165:1;;-1:-1:-1;14789:165:1;;-1:-1:-1;;;;;14789:165:1:i;14153:289::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14153:289:1;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;14153:289:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;14153:289:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;14153:289:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;14153:289:1;;-1:-1:-1;;14153:289:1;;;-1:-1:-1;14153:289:1;;-1:-1:-1;;14153:289:1:i;13110:666::-;13248:4;13326:6;:13;13343:1;13326:18;13322:60;;;-1:-1:-1;13367:4:1;13360:11;;13322:60;13392:18;;;13459:263;13491:6;:13;13483:5;:21;13459:263;;;13550:8;13533:25;;:6;13540:5;13533:13;;;;;;;;;;;;;;:25;;;13529:84;;;13594:4;13578:20;;13529:84;13647:9;13630:26;;:6;13637:5;13630:13;;;;;;;;;;;;;;:26;;;13626:86;;;13693:4;13676:21;;13626:86;13506:7;;13459:263;;;;13738:13;:31;;;;;13755:14;13738:31;13731:38;;;;13110:666;;;;;;:::o;17183:905::-;17396:13;;:42;;;-1:-1:-1;;;17396:42:1;;;;;;;;;;;17279:7;;17300:20;;17279:7;;;;-1:-1:-1;;;;;17396:13:1;;:33;;:42;;;;;;;;;;;;;;:13;:42;;;5:2:-1;;;;30:1;27;20:12;5:2;17396:42:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17396:42:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17396:42:1;17448:11;;;17396:42;17448:11;;;;;-1:-1:-1;17448:11:1;;;17534:70;;-1:-1:-1;;;;;17534:70:1;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;17534:70:1;;;;;;25:18:-1;;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;17496:118:1;;;;17448:11;;-1:-1:-1;17396:42:1;;-1:-1:-1;;17504:4:1;;17534:70;;17496:118;;;;;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;17496:118:1;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;17469:145:1;;;17628:15;17624:379;;;17668:34;17689:12;17668:20;:34::i;:::-;17659:43;;17624:379;;;17801:69;;;-1:-1:-1;;;;;17801:69:1;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;17801:69:1;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;17759:125:1;;;;17734:19;;17767:4;;17801:69;17759:125;;;25:18:-1;17759:125:1;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;17759:125:1;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;17733:151:1;;;17902:14;17898:95;;;17945:33;17965:12;17945:19;:33::i;:::-;17936:42;;17898:95;17624:379;;18020:12;18034:6;18056:12;-1:-1:-1;;;;;18042:36:1;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18042:38:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18042:38:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18042:38:1;18012:69;;;;-1:-1:-1;18042:38:1;;-1:-1:-1;17183:905:1;-1:-1:-1;;;;17183:905:1:o;11380:1724::-;11600:7;11619:16;371:3;11638:39;;:8;:15;:39;;;;;11708:13;;:67;;;-1:-1:-1;;;11708:67:1;;-1:-1:-1;;;;;11708:67:1;;;;;;;11638:39;;;;11708:67;;;;;;;;;11638:39;;-1:-1:-1;11687:18:1;;11708:13;;;;:31;;:67;;;;;-1:-1:-1;;11708:67:1;;;;;;;:13;:67;;;5:2:-1;;;;30:1;27;20:12;5:2;11708:67:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11708:67:1;;;;;;39:16:-1;36:1;17:17;2:54;101:4;11708:67:1;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;11708:67:1;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;-1:-1;11708:67:1;;-1:-1:-1;11808:22:1;;-1:-1:-1;11862:16:1;;-1:-1:-1;11785:20:1;;-1:-1:-1;11785:20:1;;-1:-1:-1;11951:1120:1;11971:8;11958:10;:21;11951:1120;;;12345:13;;12398:78;;;-1:-1:-1;;;;;12398:78:1;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;12398:78:1;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;12337:153:1;;;;12301:12;;12315:18;;12345:13;;;12375:4;;12398:78;;12337:153;;;25:18:-1;12337:153:1;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;12337:153:1;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;12300:190:1;;;;12508:7;12504:557;;;12552:1;12535:18;;;;;12571:99;12592:11;12605;12618:5;12625:8;371:3;12635:34;;12571:20;:99::i;:::-;12702:1;12688:15;;;;12504:557;;;12781:12;;12758:1;;-1:-1:-1;573:2:1;12798:25;;;12797:43;-1:-1:-1;12777:270:1;;12878:62;12886:53;:5;573:2;12898:25;;;;12886:53;:11;:53;:::i;:::-;12878:7;:62::i;:::-;12864:76;;12975:1;12962:14;;;;12777:270;;;13023:5;;;;12777:270;11951:1120;;;;;-1:-1:-1;13087:10:1;11380:1724;-1:-1:-1;;;;;;;;;11380:1724:1:o;3313:425::-;3395:12;3420:21;3451:75;3482:11;3503:1;3507;622:4;3451:30;:75::i;:::-;-1:-1:-1;;3557:15:1;;3419:107;;-1:-1:-1;;3575:56:1;-1:-1:-1;3536:170:1;;;;-1:-1:-1;;;3536:170:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3723:8;3313:425;-1:-1:-1;;3313:425:1:o;15132:350::-;15213:15;15240:22;15278:8;:15;15265:29;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;15265:29:1;-1:-1:-1;15240:54:1;-1:-1:-1;15309:13:1;15304:149;15336:8;:15;15328:5;:23;15304:149;;;15392:13;;15426:15;;-1:-1:-1;;;;;15392:13:1;;;;:33;;15426:8;;15435:5;;15426:15;;;;;;;;;;;;15392:50;;;;;;;;;;;;;-1:-1:-1;;;;;15392:50:1;-1:-1:-1;;;;;15392:50:1;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15392:50:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15392:50:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15392:50:1;15376:13;;:6;;15383:5;;15376:13;;;;;;:66;;;;:13;;;;;;;;;;;:66;15353:7;;15304:149;;;-1:-1:-1;15469:6:1;15132:350;-1:-1:-1;;15132:350:1:o;14618:165::-;14683:6;14701:18;14722:20;:7;14736:2;14740:1;14722:20;:13;:20;:::i;:::-;14701:41;-1:-1:-1;14759:17:1;14701:41;14774:1;14759:17;:14;:17;:::i;19688:139::-;19789:22;;19775:46::o;13961:186::-;14033:7;14052:18;14073:32;:7;573:2;14102;14073:32;:13;:32;:::i;:::-;14052:53;-1:-1:-1;14122:18:1;14052:53;14138:1;14122:18;:15;:18;:::i;14960:166::-;15026:6;15044:18;15065:20;:7;15079:2;15083:1;15065:20;:13;:20;:::i;:::-;15044:41;-1:-1:-1;15102:17:1;15044:41;15117:1;15102:17;:14;:17;:::i;19833:246::-;19974:9;19969:104;19993:6;:13;19989:1;:17;19969:104;;;20053:6;20060:1;20053:9;;;;;;;;;;;;;;;;20027:11;20048:1;20039:6;:10;20027:23;;;;;;;;;;;:35;-1:-1:-1;;;;;20027:35:1;;;;;;;;-1:-1:-1;20008:3:1;;19969:104;;;;19833:246;;;:::o;1224:415::-;1301:12;1326:21;1357:70;1383:11;1404:1;1408;622:4;1357:25;:70::i;15488:1258::-;15598:12;15622;15637:16;15645:7;15637;:16::i;:::-;15622:31;;15663:16;15682:21;15695:7;15682:12;:21::i;:::-;15740:13;;:44;;;-1:-1:-1;;;15740:44:1;;;;;;;;;;;15663:40;;-1:-1:-1;15713:24:1;;-1:-1:-1;;;;;15740:13:1;;;;:33;;:44;;;;;;;;;;;;;;;:13;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;15740:44:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15740:44:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15740:44:1;;-1:-1:-1;15794:24:1;15821:28;15841:7;15821:19;:28::i;:::-;15906:13;;:55;;;-1:-1:-1;;;15906:55:1;;-1:-1:-1;;;;;15906:55:1;;;;;;;;;;;;;;;;15794;;-1:-1:-1;15860:21:1;;;;15906:13;;;;;:31;;:55;;;;;;;;;;;:13;:55;;;5:2:-1;;;;30:1;27;20:12;5:2;15906:55:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15906:55:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15906:55:1;;;;;;;16092:13;;15906:55;16092:33;;-1:-1:-1;;;16092:33:1;;;;15906:55;;-1:-1:-1;15906:55:1;;-1:-1:-1;;;;;;16092:13:1;;:31;;:33;;;;;;;;;;:13;:33;;;5:2:-1;;;;30:1;27;20:12;5:2;16092:33:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16092:33:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16092:33:1;16076:49;;;;;;;;;;;:84;;;16144:16;16129:31;;:12;:31;;;16076:84;16072:169;;;16195:35;:16;16216:13;16195:35;:20;:35;:::i;:::-;16176:54;;16072:169;16299:13;;:56;;;-1:-1:-1;;;16299:56:1;;-1:-1:-1;;;;;16299:56:1;;;;;;;;;;;;;;;;16251:22;;;;16299:13;;;:32;;:56;;;;;;;;;;;;:13;:56;;;5:2:-1;;;;30:1;27;20:12;5:2;16299:56:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16299:56:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16299:56:1;;;;;;;16495:13;;16299:56;16495:33;;-1:-1:-1;;;16495:33:1;;;;16299:56;;-1:-1:-1;16299:56:1;;-1:-1:-1;;;;;;16495:13:1;;:31;;:33;;;;;;;;;;:13;:33;;;5:2:-1;;;;30:1;27;20:12;5:2;16495:33:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16495:33:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16495:33:1;16478:50;;;;;;;;;;;:86;;;16548:16;16532:32;;:13;:32;;;16478:86;16474:200;;;16599:64;16620:42;16629:16;16647:14;16620:8;:42::i;:::-;16599:16;;:64;:20;:64;:::i;:::-;16580:83;;16474:200;16690:49;16713:7;16722:16;16690:22;:49::i;:::-;16683:56;15488:1258;-1:-1:-1;;;;;;;;;;;15488:1258:1:o;18893:521::-;19038:35;;;22:32:-1;6:49;;19038:35:1;;;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;19021:53:1;;;;18958:13;;18984:12;;18958:13;;-1:-1:-1;;;;;19021:16:1;;;19038:35;;19021:53;;;;25:18:-1;19021:53:1;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;19021:53:1;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;18983:91:1;;;;19089:7;19084:66;;19112:27;;;-1:-1:-1;;;19112:27:1;;;;;;;;;;;;-1:-1:-1;;;19112:27:1;;;;;;;;;;;;;;19084:66;19198:13;19193:184;19225:6;:13;19217:5;:21;19193:184;;;19267:6;19274:5;19267:13;;;;;;;;;;;;-1:-1:-1;;;;;;19267:13:1;19263:104;;19305:24;19315:6;19323:5;19305:9;:24::i;:::-;19347:5;;19263:104;19240:7;;19193:184;;;-1:-1:-1;19400:6:1;18893:521;-1:-1:-1;;;18893:521:1:o;6570:3275::-;6878:21;6913:16;6943:20;6977:25;371:3;528:1;504:25;7048:52;;7056:11;7048:20;;:52;7038:63;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;7038:63:1;87:34:-1;135:17;;-1:-1;7038:63:1;;7027:74;;7111:22;7121:8;7131:1;7111:9;:22::i;:::-;7169:55;;;7179:20;;;371:3;7179:44;7169:55;;;-1:-1:-1;;7169:55:1;;;;;;;;;;;7143:23;;7169:55;;;;;;;21:6:-1;;104:10;7169:55:1;87:34:-1;135:17;;-1:-1;7169:55:1;;7143:81;;7249:16;7234:31;;7296:22;7275:43;;7342:4;7328:18;;7356:25;7384:9;7356:37;;7509:2256;7516:11;:52;;;;;7551:17;7547:1;:21;7535:9;7531:1;:13;:37;7516:52;7509:2256;;;7604:9;7584:29;;7627:23;7653:179;7713:11;7742:12;7772:18;7808:10;7653:42;:179::i;:::-;7860:30;;;;;;-1:-1:-1;7627:205:1;-1:-1:-1;7909:12:1;7904:1851;7935:15;7927:5;:23;;;7904:1851;;;8056:20;8079:79;:10;371:3;8096:14;;;:38;;;8079:16;:79::i;:::-;8056:102;-1:-1:-1;8186:54:1;8056:102;8228:8;8237:1;8228:11;;;;8186:32;:54::i;:::-;8176:64;;8300:12;8315:16;8323:7;8315;:16::i;:::-;8300:31;;8361:12;-1:-1:-1;;;;;8353:20:1;:4;-1:-1:-1;;;;;8353:20:1;;8349:200;;;8419:1;8397:23;;;;8349:200;;;8488:1;8467:22;;8526:4;8511:19;;8349:200;8585:21;8598:7;8585:12;:21::i;:::-;8570:11;;:36;;;;;;;;;;:77;;;8625:22;8639:7;8625:13;:22::i;:::-;8610:37;;:8;8619:1;8610:11;;;;:37;;;;8570:77;8566:637;;;8691:15;;8671:68;;8681:8;;504:25;8691:47;8671:9;:68::i;:::-;8792:15;;8761:79;;8773:7;;8782:8;;-1:-1:-1;;8792:47:1;8761:11;:79::i;:::-;8991:40;;;-1:-1:-1;;;;;;;;9008:22:1;;8991:40;;;;;;;;;26:21:-1;;;8991:40:1;22:32:-1;6:49;;8991:40:1;;;;;;;9091:15;;8954:230;;8991:40;9057:8;;-1:-1:-1;;9091:71:1;8954:11;:230::i;:::-;9224:15;;:62;504:25;9243:43;;9224:62;-1:-1:-1;9220:521:1;;-1:-1:-1;9683:4:1;;-1:-1:-1;9665:57:1;;-1:-1:-1;;;;;9665:57:1;9220:521;-1:-1:-1;;7952:7:1;;7904:1851;;;;7509:2256;;;;-1:-1:-1;;6570:3275:1;;;;;;;;;;;:::o;13782:173::-;13842:7;13861:18;13882:31;:7;13842;573:2;13882:31;:13;:31;:::i;:::-;13861:52;-1:-1:-1;13930:18:1;13861:52;13946:1;13930:18;:15;:18;:::i;10777:597::-;10990:12;11014:21;371:3;11048:32;;:8;:32;11038:43;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;11038:43:1;87:34:-1;135:17;;-1:-1;11038:43:1;;11014:67;;11091:18;11112:165;11168:11;11193:16;11223:22;11259:8;11112:42;:165::i;:::-;11091:186;-1:-1:-1;11287:55:1;11297:8;371:3;11307:34;;11287:9;:55::i;:::-;-1:-1:-1;11359:8:1;10777:597;-1:-1:-1;;;;;10777:597:1:o;450:79::-;504:25;450:79;:::o;4409:720::-;4652:21;4687:16;4717:20;4751:25;4801:12;4816:13;;;;;;;;;-1:-1:-1;;;;;4816:13:1;-1:-1:-1;;;;;4816:31:1;;:33;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4816:33:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4816:33:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4816:33:1;4878:244;;;;;;;;;-1:-1:-1;;4923:9:1;;4878:244;;;;;4816:33;4878:244;;;;;;;;;;;;4816:33;;-1:-1:-1;4878:244:1;;4969:36;4993:11;4969:23;:36::i;:::-;5023:16;5057:22;5097:11;4878:26;:244::i;:::-;4859:263;;;;-1:-1:-1;4859:263:1;-1:-1:-1;4859:263:1;;-1:-1:-1;4409:720:1;-1:-1:-1;;;;;;4409:720:1:o;10462:309::-;10623:12;10654:110;10695:16;10654:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10713:16;10731:22;10755:8;10654:40;:110::i;:::-;10647:117;10462:309;-1:-1:-1;;;;10462:309:1:o;14448:164::-;14512:6;14530:18;14551:20;:7;14565:2;14569:1;14551:20;:13;:20;:::i;18390:134::-;18456:13;18502:5;-1:-1:-1;;;;;18488:27:1;;:29;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18488:29:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18488:29:1;;;;;;39:16:-1;36:1;17:17;2:54;101:4;18488:29:1;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;18488:29:1;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;-1:-1;18488:29:1;;18390:134;-1:-1:-1;;;;;;18390:134:1:o;535:40::-;573:2;535:40;:::o;581:45::-;622:4;581:45;:::o;325:49::-;371:3;325:49;:::o;775:32::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2310:711::-;2548:21;2583:16;2613:20;2647:25;2697:12;2712:13;;;;;;;;;-1:-1:-1;;;;;2712:13:1;-1:-1:-1;;;;;2712:31:1;;:33;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2712:33:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2712:33:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2712:33:1;2774:240;;;;;;;;;;;;;;;2712:33;2774:240;;;2841:1;2833:9;;2774:240;;;;;;;;2712:33;;-1:-1:-1;2774:240:1;;2861:36;2885:11;2861:23;:36::i;14789:165::-;14854:6;14872:18;14893:20;:7;14907:2;14911:1;14893:20;:13;:20;:::i;14153:289::-;14244:12;14287:148;14376:45;:7;14390:2;14394:26;14376:45;:13;:45;:::i;:::-;14326:24;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;14326:24:1;;;;;;14287:64;;;:7;14301:1;573:2;14287:31;:13;:31;:::i;:::-;:38;:64;:38;:64;:::i;20329:1658::-;20542:15;20571:16;20601;20631:17;20662:22;20698:24;20736:18;20778:5;20767:78;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;20767:78:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20528:317;;;;;;;;;;;;;;20929:51;20958:4;20941:22;;;;;;-1:-1:-1;;;;;20941:22:1;-1:-1:-1;;;;;20941:22:1;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;20941:22:1;;;20965:6;20973;20929:11;:51::i;:::-;20994:52;21013:8;21023:9;21034:11;20994:18;:52::i;:::-;20990:991;;;21062:23;21107:10;21088:16;:29;21062:55;;21131:24;21158:13;;;;;;;;;-1:-1:-1;;;;;21158:13:1;-1:-1:-1;;;;;21158:24:1;;21183:4;21189:13;;;;;;;;;-1:-1:-1;;;;;21189:13:1;-1:-1:-1;;;;;21189:33:1;;21223:9;21189:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21189:44:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21189:44:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21189:44:1;21158:76;;;-1:-1:-1;;;;;;21158:76:1;;;;;;;-1:-1:-1;;;;;21158:76:1;;;;;;;;;;;;;;;;;;;;;21189:44;;21158:76;;;;;;;;;;;5:2:-1;;;;30:1;27;20:12;5:2;21158:76:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21158:76:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21158:76:1;21277:307;;;21158:76;21277:307;;;;;-1:-1:-1;;;;;;21277:307:1;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;21277:307:1;;;;;;;;;;;;;;;;;;-1:-1:-1;;21277:307:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;21277:307:1;;;;;;;21158:76;;-1:-1:-1;21248:414:1;;21602:6;573:2;21626:22;;21248:11;:414::i;:::-;20990:991;;;;;573:2;21852:119;371:3;21884:25;;21852:119;;;21955:1;21934:22;;:6;21945;21941:1;:10;21934:18;;;;;;;;;;;:22;-1:-1:-1;;;;;21934:22:1;;;;;;;;-1:-1:-1;21911:3:1;;21852:119;;;;20990:991;20329:1658;;;;;;;;;;;;:::o;9457:2684:33:-;9603:12;9655:7;9639;9649:2;9639:12;:23;;9631:50;;;;;-1:-1:-1;;;9631:50:33;;;;;;;;;;;;-1:-1:-1;;;9631:50:33;;;;;;;;;;;;;;;9719:6;9708:7;9699:6;:16;:26;;9691:53;;;;;-1:-1:-1;;;9691:53:33;;;;;;;;;;;;-1:-1:-1;;;9691:53:33;;;;;;;;;;;;;;;9788:7;9779:6;:16;9762:6;:13;:33;;9754:63;;;;;-1:-1:-1;;;9754:63:33;;;;;;;;;;;;-1:-1:-1;;;9754:63:33;;;;;;;;;;;;;;;9828:22;9891:15;;9919:1967;;;;12027:4;12021:11;12008:24;;12078:4;12067:9;12063:20;12057:4;12050:34;9884:2214;;9919:1967;10101:4;10095:11;10082:24;;10760:2;10751:7;10747:16;11142:9;11135:17;11129:4;11125:28;11113:9;11102;11098:25;11094:60;11190:7;11186:2;11182:16;11442:6;11428:9;11421:17;11415:4;11411:28;11399:9;11391:6;11387:22;11383:57;11379:70;11216:425;11475:3;11471:2;11468:11;11216:425;;;11613:9;;11602:21;;11516:4;11508:13;;;;11548;11216:425;;;-1:-1:-1;;11659:26:33;;;11867:2;11850:11;-1:-1:-1;;11846:25:33;11840:4;11833:39;-1:-1:-1;9884:2214:33;-1:-1:-1;12125:9:33;9457:2684;-1:-1:-1;;;;9457:2684:33:o;12936:365::-;13014:6;13054;13040;13049:1;13040:10;:20;;13032:50;;;;;-1:-1:-1;;;13032:50:33;;;;;;;;;;;;-1:-1:-1;;;13032:50:33;;;;;;;;;;;;;;;13117:6;13126:1;13117:10;13100:6;:13;:27;;13092:60;;;;;-1:-1:-1;;;13092:60:33;;;;;;;;;;;;-1:-1:-1;;;13092:60:33;;;;;;;;;;;;;;;-1:-1:-1;13229:29:33;13245:3;13229:29;13223:36;;12936:365::o;14801:373::-;14880:7;14922:6;14907;14916:2;14907:11;:21;;14899:52;;;;;-1:-1:-1;;;14899:52:33;;;;;;;;;;;;-1:-1:-1;;;14899:52:33;;;;;;;;;;;;;;;14986:6;14995:2;14986:11;14969:6;:13;:28;;14961:62;;;;;-1:-1:-1;;;14961:62:33;;;;;;;;;;;;-1:-1:-1;;;14961:62:33;;;;;;;;;;;;;;;-1:-1:-1;15101:30:33;15117:4;15101:30;15095:37;;14801:373::o;13307:365::-;13385:6;13425;13411;13420:1;13411:10;:20;;13403:50;;;;;-1:-1:-1;;;13403:50:33;;;;;;;;;;;;-1:-1:-1;;;13403:50:33;;;;;;;;;;;;;;;13488:6;13497:1;13488:10;13471:6;:13;:27;;13463:60;;;;;-1:-1:-1;;;13463:60:33;;;;;;;;;;;;-1:-1:-1;;;13463:60:33;;;;;;;;;;;;;;;-1:-1:-1;13600:29:33;13616:3;13600:29;13594:36;;13307:365::o;834:176:24:-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:24;;;;;;;;;;;;;;;;;;;;;;;;;;;358:104:23;416:7;446:1;442;:5;:13;;454:1;442:13;;;-1:-1:-1;450:1:23;;358:104;-1:-1:-1;358:104:23:o;1274:134:24:-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;12147:416:33:-;12226:7;12268:6;12253;12262:2;12253:11;:21;;12245:52;;;;;-1:-1:-1;;;12245:52:33;;;;;;;;;;;;-1:-1:-1;;;12245:52:33;;;;;;;;;;;;;;;12332:6;12341:2;12332:11;12315:6;:13;:28;;12307:62;;;;;-1:-1:-1;;;12307:62:33;;;;;;;;;;;;-1:-1:-1;;;12307:62:33;;;;;;;;;;;;;;;-1:-1:-1;12457:30:33;12473:4;12457:30;12451:37;-1:-1:-1;;;12447:71:33;;;12147:416::o;393:2955::-;527:12;555:22;760:4;754:11;741:24;;917:9;911:16;958:6;947:9;940:25;1200:4;1189:9;1185:20;1349:6;1345:2;1341:15;1543:4;1532:9;1528:20;1370:525;1570:3;1566:2;1563:11;1370:525;;;1871:9;;1860:21;;1677:4;1669:13;;;;1705;1370:525;;;-1:-1:-1;2106:17:33;;2166:16;;2154:29;;2136:48;;2106:17;-1:-1:-1;2328:3:33;-1:-1:-1;2465:15:33;;;2542:4;2526:21;;2494:221;2569:3;2565:2;2562:11;2494:221;;;2691:9;;2680:21;;2606:4;2598:13;;;;2634;2494:221;;;-1:-1:-1;3204:16:33;;3192:29;;;;3185:37;3176:47;;;;3248:2;3172:56;-1:-1:-1;;3153:151:33;3147:4;3140:165;-1:-1:-1;3332:9:33;-1:-1:-1;393:2955:33;;;;:::o;1732:187:24:-;1818:7;1853:12;1845:6;;;;1837:29;;;;-1:-1:-1;;;1837:29:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1837:29:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1888:5:24;;;1732:187::o",
  "source": "pragma solidity ^0.5.10;\n\nimport \"@openzeppelin/contracts/math/SafeMath.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/ERC20Detailed.sol\";\nimport \"solidity-bytes-utils/contracts/BytesLib.sol\";\nimport \"./BatchExchange.sol\";\n\ncontract BatchExchangeViewer {\n    using BytesLib for bytes;\n    using SafeMath for uint256;\n\n    uint8 public constant AUCTION_ELEMENT_WIDTH = 112;\n    // Contains the orderId on top of the normal auction element data\n    uint8 public constant INDEXED_AUCTION_ELEMENT_WIDTH = AUCTION_ELEMENT_WIDTH + 2;\n    uint8 public constant ADDRESS_WIDTH = 20;\n    uint16 public constant LARGE_PAGE_SIZE = 5000;\n    // Can be used by external contracts to indicate no filter as it doesn't seem possible\n    // to create an empty memory array in solidity.\n    uint16[] public ALL_TOKEN_FILTER;\n\n    BatchExchange batchExchange;\n\n    constructor(BatchExchange exchange) public {\n        batchExchange = exchange;\n    }\n\n    /** @dev Queries the orderbook for the auction that is still accepting orders\n     *  @param tokenFilter all returned order will have buy *and* sell token from this list (leave empty for \"no filter\")\n     *  @return encoded bytes representing orders, maxed at 5000 elements\n     */\n    function getOpenOrderBook(address[] memory tokenFilter) public view returns (bytes memory) {\n        (bytes memory elements, , , ) = getOpenOrderBookPaginated(tokenFilter, address(0), 0, LARGE_PAGE_SIZE);\n        require(\n            elements.length < uint256(LARGE_PAGE_SIZE) * INDEXED_AUCTION_ELEMENT_WIDTH,\n            \"Orderbook too large, use paginated view functions\"\n        );\n        return elements;\n    }\n\n    /** @dev Queries a page of the orderbook for the auction that is still accepting orders\n     *  @param tokenFilter all returned order will have buy *and* sell token from this list (leave empty for \"no filter\")\n     *  @param previousPageUser address taken from nextPageUser return value from last page (address(0) for first page)\n     *  @param previousPageUserOffset offset taken nextPageUserOffset return value from last page (0 for first page)\n     *  @param maxPageSize count of elements to be returned per page (same value is used for subqueries on the exchange)\n     *  @return encoded bytes representing orders and page information for next page\n     */\n    function getOpenOrderBookPaginated(\n        address[] memory tokenFilter,\n        address previousPageUser,\n        uint16 previousPageUserOffset,\n        uint16 maxPageSize\n    )\n        public\n        view\n        returns (\n            bytes memory elements,\n            bool hasNextPage,\n            address nextPageUser,\n            uint16 nextPageUserOffset\n        )\n    {\n        uint32 batch = batchExchange.getCurrentBatchId();\n        return\n            getFilteredOrdersPaginated(\n                [batch, batch, batch + 1],\n                getTokenIdsFromAdresses(tokenFilter),\n                previousPageUser,\n                previousPageUserOffset,\n                maxPageSize\n            );\n    }\n\n    /** @dev Queries the orderbook for the auction that is currently being solved\n     *  @param tokenFilter all returned order will have buy *and* sell token from this list (leave empty for \"no filter\")\n     *  @return encoded bytes representing orders, maxed at 5000 elements\n     */\n    function getFinalizedOrderBook(address[] memory tokenFilter) public view returns (bytes memory) {\n        (bytes memory elements, , , ) = getFinalizedOrderBookPaginated(tokenFilter, address(0), 0, LARGE_PAGE_SIZE);\n        require(\n            elements.length < uint256(LARGE_PAGE_SIZE) * INDEXED_AUCTION_ELEMENT_WIDTH,\n            \"Orderbook too large, use paginated view functions\"\n        );\n        return elements;\n    }\n\n    /** @dev Queries a page of the orderbook for the auction that is currently being solved\n     *  @param tokenFilter all returned order will have buy *and* sell token from this list (leave empty for \"no filter\")\n     *  @param previousPageUser address taken from nextPageUser return value from last page (address(0) for first page)\n     *  @param previousPageUserOffset offset taken nextPageUserOffset return value from last page (0 for first page)\n     *  @param maxPageSize count of elements to be returned per page (same value is used for subqueries on the exchange)\n     *  @return encoded bytes representing orders and page information for next page\n     */\n    function getFinalizedOrderBookPaginated(\n        address[] memory tokenFilter,\n        address previousPageUser,\n        uint16 previousPageUserOffset,\n        uint16 maxPageSize\n    )\n        public\n        view\n        returns (\n            bytes memory elements,\n            bool hasNextPage,\n            address nextPageUser,\n            uint16 nextPageUserOffset\n        )\n    {\n        uint32 batch = batchExchange.getCurrentBatchId();\n        return\n            getFilteredOrdersPaginated(\n                [batch - 1, batch - 1, batch],\n                getTokenIdsFromAdresses(tokenFilter),\n                previousPageUser,\n                previousPageUserOffset,\n                maxPageSize\n            );\n    }\n\n    /** @dev Queries a page in the list of all orders\n     *  @param batchIds Triple with the following values [maxValidFrom, minValidUntil, sellBalanceTargetBatchIndex]\n     *  Batched together as we are running out of local variables (Solidity does not compile with Stack too deep error)\n     *      - maxValidFrom: all returned orders will have a validFrom <= this value (they were placed at or before that batch)\n     *      - minValidUntil all returned orders will have a validUntil >= this value (validity ends at or after that batch)\n     *      - sellBalanceTargetBatchIndex the batchIndex at which we are expecting the sellTokenBalance to be valid\n        (e.g. in the current live orderbook we want to include sellBalances that are valid in currentBatch + 1).\n     *  @param tokenFilter all returned order will have buy *and* sell token from this list (leave empty for \"no filter\")\n     *  @param previousPageUser address taken from nextPageUser return value from last page (address(0) for first page)\n     *  @param previousPageUserOffset offset taken nextPageUserOffset return value from last page (0 for first page)\n     *  @param maxPageSize maximum count of elements to be returned per page (same value is used for subqueries on the exchange)\n     *  @return encoded bytes representing orders and page information for next page. Result can contain less elements than\n     *  maxPageSize if remaining gas is low.\n     */\n    function getFilteredOrdersPaginated(\n        uint32[3] memory batchIds, // batched to save local variables\n        uint16[] memory tokenFilter,\n        address previousPageUser,\n        uint16 previousPageUserOffset,\n        uint16 maxPageSize\n    )\n        public\n        view\n        returns (\n            bytes memory elements,\n            bool hasNextPage,\n            address nextPageUser,\n            uint16 nextPageUserOffset\n        )\n    {\n        elements = new bytes(uint256(maxPageSize) * INDEXED_AUCTION_ELEMENT_WIDTH);\n        setLength(elements, 0);\n        bytes memory unfiltered = new bytes(uint256(maxPageSize) * AUCTION_ELEMENT_WIDTH);\n        nextPageUser = previousPageUser;\n        nextPageUserOffset = previousPageUserOffset;\n        hasNextPage = true;\n        uint256 gasLeftBeforePage = gasleft();\n        // Continue while more pages exist or we still have 3/5 (60%) of remaining gas from previous page\n        while (hasNextPage && 5 * gasleft() > 3 * gasLeftBeforePage) {\n            gasLeftBeforePage = gasleft();\n            uint256 unfilteredCount = writeEncodedOrdersPaginatedWithTokenFilter(\n                tokenFilter,\n                nextPageUser,\n                nextPageUserOffset,\n                unfiltered\n            );\n            hasNextPage = unfilteredCount == maxPageSize;\n            for (uint16 index = 0; index < unfilteredCount; index++) {\n                // make sure we don't overflow index * AUCTION_ELEMENT_WIDTH\n                bytes memory element = unfiltered.slice(uint256(index) * AUCTION_ELEMENT_WIDTH, AUCTION_ELEMENT_WIDTH);\n                element = updateSellTokenBalanceForBatchId(element, batchIds[2]);\n                // Update pagination info\n                address user = getUser(element);\n                if (user == nextPageUser) {\n                    nextPageUserOffset += 1;\n                } else {\n                    nextPageUserOffset = 1;\n                    nextPageUser = user;\n                }\n                if (batchIds[0] >= getValidFrom(element) && batchIds[1] <= getValidUntil(element)) {\n                    setLength(elements, elements.length + INDEXED_AUCTION_ELEMENT_WIDTH);\n                    copyInPlace(element, elements, elements.length - INDEXED_AUCTION_ELEMENT_WIDTH);\n                    // Append index so order information can be used to construct solutions\n                    copyInPlace(\n                        abi.encodePacked(nextPageUserOffset - 1),\n                        elements,\n                        elements.length - INDEXED_AUCTION_ELEMENT_WIDTH + AUCTION_ELEMENT_WIDTH\n                    );\n                }\n                if (elements.length >= maxPageSize * INDEXED_AUCTION_ELEMENT_WIDTH) {\n                    // We are at capacity, return\n                    // Note, that we might indicate a nextPage although we exactly made it to the end.\n                    // However, since the inner call to fetch unfiltered orders might also indicate a next\n                    // page even though it is right at the end, this cannot really be avoided.\n                    return (elements, true, nextPageUser, nextPageUserOffset);\n                }\n            }\n        }\n        return (elements, hasNextPage, nextPageUser, nextPageUserOffset);\n    }\n\n    /** @dev View returning byte-encoded sell orders in paginated form. It has the same behavior as\n     * BatchExchange.getEncodedUsersPaginated but uses less memory and thus is more gas efficient.\n     * @param previousPageUser address of last user received in the previous page (address(0) for first page)\n     * @param previousPageUserOffset the number of orders received for the last user on the previous page (0 for first page).\n     * @param pageSize uint determining the count of orders to be returned per page\n     * @return encoded bytes representing a page of orders ordered by (user, index)\n     */\n    function getEncodedOrdersPaginated(\n        address previousPageUser,\n        uint16 previousPageUserOffset,\n        uint256 pageSize\n    ) public view returns (bytes memory) {\n        return getEncodedOrdersPaginatedWithTokenFilter(ALL_TOKEN_FILTER, previousPageUser, previousPageUserOffset, pageSize);\n    }\n\n    function getEncodedOrdersPaginatedWithTokenFilter(\n        uint16[] memory tokenFilter,\n        address previousPageUser,\n        uint16 previousPageUserOffset,\n        uint256 pageSize\n    ) public view returns (bytes memory) {\n        bytes memory elements = new bytes(pageSize * AUCTION_ELEMENT_WIDTH);\n        uint256 orderCount = writeEncodedOrdersPaginatedWithTokenFilter(\n            tokenFilter,\n            previousPageUser,\n            previousPageUserOffset,\n            elements\n        );\n        setLength(elements, orderCount * AUCTION_ELEMENT_WIDTH);\n        return elements;\n    }\n\n    function writeEncodedOrdersPaginatedWithTokenFilter(\n        uint16[] memory tokenFilter,\n        address previousPageUser,\n        uint16 previousPageUserOffset,\n        bytes memory elements\n    ) public view returns (uint256) {\n        uint256 pageSize = elements.length / AUCTION_ELEMENT_WIDTH;\n        bytes memory users = batchExchange.getUsersPaginated(previousPageUser, uint16(pageSize));\n        uint16 currentOffset = previousPageUserOffset;\n        address currentUser = previousPageUser;\n        uint256 orderIndex = 0;\n        uint256 userIndex = 0;\n        while (orderIndex < pageSize) {\n            // There is no way of getting the number of orders a user has, thus \"try\" fetching the next order and\n            // check if the static call succeeded. Otherwise move on to the next user. Limit the amount of gas as\n            // in the failure case IVALID_OPCODE consumes all remaining gas.\n            (bool success, bytes memory order) = address(batchExchange).staticcall.gas(5000)(\n                abi.encodeWithSignature(\"orders(address,uint256)\", currentUser, currentOffset)\n            );\n            if (success) {\n                currentOffset += 1;\n                encodeAuctionElement(tokenFilter, currentUser, order, elements, orderIndex * AUCTION_ELEMENT_WIDTH);\n                orderIndex += 1;\n            } else {\n                currentOffset = 0;\n                if (users.length >= (userIndex * ADDRESS_WIDTH) + ADDRESS_WIDTH) {\n                    currentUser = getUser(users.slice(userIndex * ADDRESS_WIDTH, ADDRESS_WIDTH));\n                    userIndex += 1;\n                } else {\n                    break;\n                }\n            }\n        }\n        return orderIndex;\n    }\n\n    function matchesTokenFilter(\n        uint16 buyToken,\n        uint16 sellToken,\n        uint16[] memory filter\n    ) public pure returns (bool) {\n        // An empty filter is interpreted as \"select all\"\n        if (filter.length == 0) {\n            return true;\n        }\n        (bool foundBuyToken, bool foundSellToken) = (false, false);\n        for (uint256 index = 0; index < filter.length; index++) {\n            if (filter[index] == buyToken) {\n                foundBuyToken = true;\n            }\n            if (filter[index] == sellToken) {\n                foundSellToken = true;\n            }\n        }\n        return foundBuyToken && foundSellToken;\n    }\n\n    function getUser(bytes memory element) public pure returns (address) {\n        bytes memory slice = element.slice(0, ADDRESS_WIDTH);\n        return slice.toAddress(0);\n    }\n\n    function getSellTokenBalance(bytes memory element) public pure returns (uint256) {\n        bytes memory slice = element.slice(ADDRESS_WIDTH, 52);\n        return slice.toUint256(0);\n    }\n\n    function updateSellTokenBalance(bytes memory element, uint256 amount) public pure returns (bytes memory) {\n        return\n            element.slice(0, ADDRESS_WIDTH).concat(abi.encodePacked(amount)).concat(\n                element.slice(52, AUCTION_ELEMENT_WIDTH - 52)\n            );\n    }\n\n    function getBuyToken(bytes memory element) public pure returns (uint16) {\n        bytes memory slice = element.slice(52, 2);\n        return slice.toUint16(0);\n    }\n\n    function getSellToken(bytes memory element) public pure returns (uint16) {\n        bytes memory slice = element.slice(54, 2);\n        return slice.toUint16(0);\n    }\n\n    function getValidFrom(bytes memory element) public pure returns (uint32) {\n        bytes memory slice = element.slice(56, 4);\n        return slice.toUint32(0);\n    }\n\n    function getValidUntil(bytes memory element) public pure returns (uint32) {\n        bytes memory slice = element.slice(60, 4);\n        return slice.toUint32(0);\n    }\n\n    function getTokenIdsFromAdresses(address[] memory tokenIds) public view returns (uint16[] memory) {\n        uint16[] memory result = new uint16[](tokenIds.length);\n        for (uint256 index = 0; index < tokenIds.length; index++) {\n            result[index] = batchExchange.tokenAddressToIdMap(tokenIds[index]);\n        }\n        return result;\n    }\n\n    function updateSellTokenBalanceForBatchId(bytes memory element, uint32 targetBatchIndex) public view returns (bytes memory) {\n        address user = getUser(element);\n        uint16 sellToken = getSellToken(element);\n        address sellTokenAddress = batchExchange.tokenIdToAddressMap(sellToken);\n        uint256 sellTokenBalance = getSellTokenBalance(element);\n        (uint256 depositAmount, uint32 depositBatch) = batchExchange.getPendingDeposit(user, sellTokenAddress);\n        // The deposit is not valid currently but will be valid at target batch, thus add to balance\n        if (depositBatch >= batchExchange.getCurrentBatchId() && depositBatch < targetBatchIndex) {\n            sellTokenBalance = sellTokenBalance.add(depositAmount);\n        }\n        (uint256 withdrawAmount, uint32 withdrawBatch) = batchExchange.getPendingWithdraw(user, sellTokenAddress);\n        // The withdraw is not valid currently but will be valid at target batch, thus subtract from balance\n        if (withdrawBatch >= batchExchange.getCurrentBatchId() && withdrawBatch < targetBatchIndex) {\n            sellTokenBalance = sellTokenBalance.sub(Math.min(sellTokenBalance, withdrawAmount));\n        }\n        return updateSellTokenBalance(element, sellTokenBalance);\n    }\n\n    /**\n     * @dev Queries the token information for the given tokenId. Can handle symbols of type string and bytes (e.g. MKR).\n     * Returns \"Unknown\" as symbol value if it cannot be retrieved and reverts if decimals can not be fetched\n     * (to avoid ambiguity with a \"valid\" value).\n     * @param tokenId the ID of a token listed on BatchExchange\n     * @return the address, symbol and decimals of the token contract\n     */\n    function getTokenInfo(uint16 tokenId)\n        public\n        view\n        returns (\n            address,\n            string memory symbol,\n            uint8 decimals\n        )\n    {\n        address tokenAddress = batchExchange.tokenIdToAddressMap(tokenId);\n        symbol = \"\";\n        (bool hasStringSymbol, ) = address(this).staticcall(\n            abi.encodeWithSignature(\"getTokenSymbolString(address)\", tokenAddress)\n        );\n        if (hasStringSymbol) {\n            symbol = getTokenSymbolString(tokenAddress);\n        } else {\n            (bool hasBytesSymbol, ) = address(this).staticcall(\n                abi.encodeWithSignature(\"getTokenSymbolBytes(address)\", tokenAddress)\n            );\n            if (hasBytesSymbol) {\n                symbol = getTokenSymbolBytes(tokenAddress);\n            }\n        }\n        return (tokenAddress, symbol, ERC20Detailed(tokenAddress).decimals());\n    }\n\n    /**\n     * @dev returns the symbol() of the given address assuming it is returned as a string.\n     * Reverts if method does not exist or returns data that is not a valid string.\n     * @param token the token address from which to receive the symbol\n     * @return the token's symbol\n     */\n    function getTokenSymbolString(address token) public view returns (string memory) {\n        return ERC20Detailed(token).symbol();\n    }\n\n    /**\n     * @dev returns the symbol() of the given address assuming it is returned as a bytes.\n     * Reverts if method does not exist or returns data that cannot be casted into a string.\n     * @param token the token address from which to receive the symbol\n     * @return the token's symbol converted into a trimmed (trailing 0 bytes remove) string.\n     */\n    function getTokenSymbolBytes(address token) public view returns (string memory) {\n        (bool success, bytes memory result) = token.staticcall(abi.encodeWithSignature(\"symbol()\"));\n        if (!success) {\n            revert(\"Cannot get symbol\");\n        }\n        //Find last non-zero byte\n        for (uint256 index = 0; index < result.length; index++) {\n            if (result[index] == 0) {\n                setLength(result, index);\n                break;\n            }\n        }\n        return string(result);\n    }\n\n    /**\n     * @dev Sets the length of the given buffer (truncating any items exceeding the length).\n     * Note, that this can lead to memory leakage or undefined behavior if length  is larger than the size\n     * that was originally allocated by the buffer.\n     */\n    function setLength(bytes memory buffer, uint256 length) public pure {\n        assembly {\n            mstore(buffer, length)\n        }\n    }\n\n    function copyInPlace(\n        bytes memory source,\n        bytes memory destination,\n        uint256 offset\n    ) public pure {\n        for (uint256 i = 0; i < source.length; i++) {\n            destination[offset + i] = source[i];\n        }\n    }\n\n    /** @dev Encodes the auction elements in the same format as BatchExchange.encodeAuctionElement with\n     * the only difference that order with tokens that match the token filter will be 0 serialized\n     * (as if they were deleted)\n     */\n    function encodeAuctionElement(\n        uint16[] memory tokenFilter,\n        address user,\n        bytes memory order,\n        bytes memory target,\n        uint256 offset\n    ) private view {\n        (\n            uint16 buyToken,\n            uint16 sellToken,\n            uint32 validFrom,\n            uint32 validUntil,\n            uint128 priceNumerator,\n            uint128 priceDenominator,\n            uint128 usedAmount\n        ) = abi.decode(order, (uint16, uint16, uint32, uint32, uint128, uint128, uint128));\n        // Unconditionally serialize user address to not break pagination\n        copyInPlace(abi.encodePacked(user), target, offset);\n        if (matchesTokenFilter(buyToken, sellToken, tokenFilter)) {\n            uint128 remainingAmount = priceDenominator - usedAmount;\n            uint256 sellTokenBalance = batchExchange.getBalance(user, batchExchange.tokenIdToAddressMap(sellToken));\n            copyInPlace(\n                abi.encodePacked(\n                    sellTokenBalance,\n                    buyToken,\n                    sellToken,\n                    validFrom,\n                    validUntil,\n                    priceNumerator,\n                    priceDenominator,\n                    remainingAmount\n                ),\n                target,\n                offset + ADDRESS_WIDTH\n            );\n        } else {\n            // NOTE: Ensure we write 0-s to the target memory location as we are\n            // reusing buffer and want to avoid stale data being left behind.\n            for (uint256 i = ADDRESS_WIDTH; i < AUCTION_ELEMENT_WIDTH; i++) {\n                target[i + offset] = 0;\n            }\n        }\n    }\n}\n",
  "sourcePath": "/Users/felixleupold/Gnosis/dex-contracts/contracts/BatchExchangeViewer.sol",
  "ast": {
    "absolutePath": "/Users/felixleupold/Gnosis/dex-contracts/contracts/BatchExchangeViewer.sol",
    "exportedSymbols": {
      "BatchExchangeViewer": [
        3517
      ]
    },
    "id": 3518,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2228,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".10"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:1"
      },
      {
        "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
        "file": "@openzeppelin/contracts/math/SafeMath.sol",
        "id": 2229,
        "nodeType": "ImportDirective",
        "scope": 3518,
        "sourceUnit": 8724,
        "src": "26:51:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20Detailed.sol",
        "file": "@openzeppelin/contracts/token/ERC20/ERC20Detailed.sol",
        "id": 2230,
        "nodeType": "ImportDirective",
        "scope": 3518,
        "sourceUnit": 9305,
        "src": "78:63:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "solidity-bytes-utils/contracts/BytesLib.sol",
        "file": "solidity-bytes-utils/contracts/BytesLib.sol",
        "id": 2231,
        "nodeType": "ImportDirective",
        "scope": 3518,
        "sourceUnit": 10228,
        "src": "142:53:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/felixleupold/Gnosis/dex-contracts/contracts/BatchExchange.sol",
        "file": "./BatchExchange.sol",
        "id": 2232,
        "nodeType": "ImportDirective",
        "scope": 3518,
        "sourceUnit": 2227,
        "src": "196:29:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 3517,
        "linearizedBaseContracts": [
          3517
        ],
        "name": "BatchExchangeViewer",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 2235,
            "libraryName": {
              "contractScope": null,
              "id": 2233,
              "name": "BytesLib",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10227,
              "src": "268:8:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BytesLib_$10227",
                "typeString": "library BytesLib"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "262:25:1",
            "typeName": {
              "id": 2234,
              "name": "bytes",
              "nodeType": "ElementaryTypeName",
              "src": "281:5:1",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes_storage_ptr",
                "typeString": "bytes"
              }
            }
          },
          {
            "id": 2238,
            "libraryName": {
              "contractScope": null,
              "id": 2236,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8723,
              "src": "298:8:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$8723",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "292:27:1",
            "typeName": {
              "id": 2237,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "311:7:1",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": true,
            "id": 2241,
            "name": "AUCTION_ELEMENT_WIDTH",
            "nodeType": "VariableDeclaration",
            "scope": 3517,
            "src": "325:49:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint8",
              "typeString": "uint8"
            },
            "typeName": {
              "id": 2239,
              "name": "uint8",
              "nodeType": "ElementaryTypeName",
              "src": "325:5:1",
              "typeDescriptions": {
                "typeIdentifier": "t_uint8",
                "typeString": "uint8"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "313132",
              "id": 2240,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "371:3:1",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_112_by_1",
                "typeString": "int_const 112"
              },
              "value": "112"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 2246,
            "name": "INDEXED_AUCTION_ELEMENT_WIDTH",
            "nodeType": "VariableDeclaration",
            "scope": 3517,
            "src": "450:79:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint8",
              "typeString": "uint8"
            },
            "typeName": {
              "id": 2242,
              "name": "uint8",
              "nodeType": "ElementaryTypeName",
              "src": "450:5:1",
              "typeDescriptions": {
                "typeIdentifier": "t_uint8",
                "typeString": "uint8"
              }
            },
            "value": {
              "argumentTypes": null,
              "commonType": {
                "typeIdentifier": "t_uint8",
                "typeString": "uint8"
              },
              "id": 2245,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "lValueRequested": false,
              "leftExpression": {
                "argumentTypes": null,
                "id": 2243,
                "name": "AUCTION_ELEMENT_WIDTH",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 2241,
                "src": "504:21:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                }
              },
              "nodeType": "BinaryOperation",
              "operator": "+",
              "rightExpression": {
                "argumentTypes": null,
                "hexValue": "32",
                "id": 2244,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "528:1:1",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_2_by_1",
                  "typeString": "int_const 2"
                },
                "value": "2"
              },
              "src": "504:25:1",
              "typeDescriptions": {
                "typeIdentifier": "t_uint8",
                "typeString": "uint8"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 2249,
            "name": "ADDRESS_WIDTH",
            "nodeType": "VariableDeclaration",
            "scope": 3517,
            "src": "535:40:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint8",
              "typeString": "uint8"
            },
            "typeName": {
              "id": 2247,
              "name": "uint8",
              "nodeType": "ElementaryTypeName",
              "src": "535:5:1",
              "typeDescriptions": {
                "typeIdentifier": "t_uint8",
                "typeString": "uint8"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "3230",
              "id": 2248,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "573:2:1",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_20_by_1",
                "typeString": "int_const 20"
              },
              "value": "20"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 2252,
            "name": "LARGE_PAGE_SIZE",
            "nodeType": "VariableDeclaration",
            "scope": 3517,
            "src": "581:45:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint16",
              "typeString": "uint16"
            },
            "typeName": {
              "id": 2250,
              "name": "uint16",
              "nodeType": "ElementaryTypeName",
              "src": "581:6:1",
              "typeDescriptions": {
                "typeIdentifier": "t_uint16",
                "typeString": "uint16"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "35303030",
              "id": 2251,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "622:4:1",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_5000_by_1",
                "typeString": "int_const 5000"
              },
              "value": "5000"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2255,
            "name": "ALL_TOKEN_FILTER",
            "nodeType": "VariableDeclaration",
            "scope": 3517,
            "src": "775:32:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_uint16_$dyn_storage",
              "typeString": "uint16[]"
            },
            "typeName": {
              "baseType": {
                "id": 2253,
                "name": "uint16",
                "nodeType": "ElementaryTypeName",
                "src": "775:6:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint16",
                  "typeString": "uint16"
                }
              },
              "id": 2254,
              "length": null,
              "nodeType": "ArrayTypeName",
              "src": "775:8:1",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_uint16_$dyn_storage_ptr",
                "typeString": "uint16[]"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2257,
            "name": "batchExchange",
            "nodeType": "VariableDeclaration",
            "scope": 3517,
            "src": "814:27:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_BatchExchange_$2226",
              "typeString": "contract BatchExchange"
            },
            "typeName": {
              "contractScope": null,
              "id": 2256,
              "name": "BatchExchange",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2226,
              "src": "814:13:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BatchExchange_$2226",
                "typeString": "contract BatchExchange"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2266,
              "nodeType": "Block",
              "src": "891:41:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2264,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2262,
                      "name": "batchExchange",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2257,
                      "src": "901:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_BatchExchange_$2226",
                        "typeString": "contract BatchExchange"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2263,
                      "name": "exchange",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2259,
                      "src": "917:8:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_BatchExchange_$2226",
                        "typeString": "contract BatchExchange"
                      }
                    },
                    "src": "901:24:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BatchExchange_$2226",
                      "typeString": "contract BatchExchange"
                    }
                  },
                  "id": 2265,
                  "nodeType": "ExpressionStatement",
                  "src": "901:24:1"
                }
              ]
            },
            "documentation": null,
            "id": 2267,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2260,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2259,
                  "name": "exchange",
                  "nodeType": "VariableDeclaration",
                  "scope": 2267,
                  "src": "860:22:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_BatchExchange_$2226",
                    "typeString": "contract BatchExchange"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2258,
                    "name": "BatchExchange",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2226,
                    "src": "860:13:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BatchExchange_$2226",
                      "typeString": "contract BatchExchange"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "859:24:1"
            },
            "returnParameters": {
              "id": 2261,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "891:0:1"
            },
            "scope": 3517,
            "src": "848:84:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2300,
              "nodeType": "Block",
              "src": "1315:324:1",
              "statements": [
                {
                  "assignments": [
                    2276,
                    null,
                    null,
                    null
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2276,
                      "name": "elements",
                      "nodeType": "VariableDeclaration",
                      "scope": 2300,
                      "src": "1326:21:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 2275,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1326:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    null,
                    null,
                    null
                  ],
                  "id": 2285,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2278,
                        "name": "tokenFilter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2270,
                        "src": "1383:11:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2280,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1404:1:1",
                            "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": 2279,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1396:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 2281,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1396:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2282,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1408:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "id": 2283,
                        "name": "LARGE_PAGE_SIZE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2252,
                        "src": "1411:15:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      ],
                      "id": 2277,
                      "name": "getOpenOrderBookPaginated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2343,
                      "src": "1357:25:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$_t_uint16_$_t_uint16_$returns$_t_bytes_memory_ptr_$_t_bool_$_t_address_$_t_uint16_$",
                        "typeString": "function (address[] memory,address,uint16,uint16) view returns (bytes memory,bool,address,uint16)"
                      }
                    },
                    "id": 2284,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1357:70:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_bool_$_t_address_$_t_uint16_$",
                      "typeString": "tuple(bytes memory,bool,address,uint16)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1325:102:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2294,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2287,
                            "name": "elements",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2276,
                            "src": "1458:8:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 2288,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1458:15:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2293,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2290,
                                "name": "LARGE_PAGE_SIZE",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2252,
                                "src": "1484:15:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              ],
                              "id": 2289,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1476:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": "uint256"
                            },
                            "id": 2291,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1476:24:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2292,
                            "name": "INDEXED_AUCTION_ELEMENT_WIDTH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2246,
                            "src": "1503:29:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "1476:56:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1458:74:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f72646572626f6f6b20746f6f206c617267652c2075736520706167696e6174656420766965772066756e6374696f6e73",
                        "id": 2295,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1546:51:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_64c189c1db3114a6270423433e5200886fc8dc45e18ee1766c9d5b6794e49834",
                          "typeString": "literal_string \"Orderbook too large, use paginated view functions\""
                        },
                        "value": "Orderbook too large, use paginated view functions"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_64c189c1db3114a6270423433e5200886fc8dc45e18ee1766c9d5b6794e49834",
                          "typeString": "literal_string \"Orderbook too large, use paginated view functions\""
                        }
                      ],
                      "id": 2286,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10245,
                        10246
                      ],
                      "referencedDeclaration": 10246,
                      "src": "1437:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2296,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1437:170:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2297,
                  "nodeType": "ExpressionStatement",
                  "src": "1437:170:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2298,
                    "name": "elements",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2276,
                    "src": "1624:8:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 2274,
                  "id": 2299,
                  "nodeType": "Return",
                  "src": "1617:15:1"
                }
              ]
            },
            "documentation": "@dev Queries the orderbook for the auction that is still accepting orders\n @param tokenFilter all returned order will have buy *and* sell token from this list (leave empty for \"no filter\")\n @return encoded bytes representing orders, maxed at 5000 elements",
            "id": 2301,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getOpenOrderBook",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2271,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2270,
                  "name": "tokenFilter",
                  "nodeType": "VariableDeclaration",
                  "scope": 2301,
                  "src": "1250:28:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2268,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1250:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2269,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1250:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1249:30:1"
            },
            "returnParameters": {
              "id": 2274,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2273,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2301,
                  "src": "1301:12:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2272,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1301:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1300:14:1"
            },
            "scope": 3517,
            "src": "1224:415:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2342,
              "nodeType": "Block",
              "src": "2687:334:1",
              "statements": [
                {
                  "assignments": [
                    2322
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2322,
                      "name": "batch",
                      "nodeType": "VariableDeclaration",
                      "scope": 2342,
                      "src": "2697:12:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 2321,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2697:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2326,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2323,
                        "name": "batchExchange",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2257,
                        "src": "2712:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_BatchExchange_$2226",
                          "typeString": "contract BatchExchange"
                        }
                      },
                      "id": 2324,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getCurrentBatchId",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3888,
                      "src": "2712:31:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint32_$",
                        "typeString": "function () view external returns (uint32)"
                      }
                    },
                    "id": 2325,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2712:33:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2697:48:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "id": 2328,
                            "name": "batch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2322,
                            "src": "2819:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2329,
                            "name": "batch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2322,
                            "src": "2826:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "id": 2332,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2330,
                              "name": "batch",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2322,
                              "src": "2833:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 2331,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2841:1:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "2833:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          }
                        ],
                        "id": 2333,
                        "isConstant": false,
                        "isInlineArray": true,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "2818:25:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint32_$3_memory_ptr",
                          "typeString": "uint32[3] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2335,
                            "name": "tokenFilter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2304,
                            "src": "2885:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          ],
                          "id": 2334,
                          "name": "getTokenIdsFromAdresses",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3111,
                          "src": "2861:23:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint16_$dyn_memory_ptr_$",
                            "typeString": "function (address[] memory) view returns (uint16[] memory)"
                          }
                        },
                        "id": 2336,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2861:36:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                          "typeString": "uint16[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2337,
                        "name": "previousPageUser",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2306,
                        "src": "2915:16:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2338,
                        "name": "previousPageUserOffset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2308,
                        "src": "2949:22:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2339,
                        "name": "maxPageSize",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2310,
                        "src": "2989:11:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_uint32_$3_memory_ptr",
                          "typeString": "uint32[3] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                          "typeString": "uint16[] memory"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      ],
                      "id": 2327,
                      "name": "getFilteredOrdersPaginated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2649,
                      "src": "2774:26:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_array$_t_uint32_$3_memory_ptr_$_t_array$_t_uint16_$dyn_memory_ptr_$_t_address_$_t_uint16_$_t_uint16_$returns$_t_bytes_memory_ptr_$_t_bool_$_t_address_$_t_uint16_$",
                        "typeString": "function (uint32[3] memory,uint16[] memory,address,uint16,uint16) view returns (bytes memory,bool,address,uint16)"
                      }
                    },
                    "id": 2340,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2774:240:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_bool_$_t_address_$_t_uint16_$",
                      "typeString": "tuple(bytes memory,bool,address,uint16)"
                    }
                  },
                  "functionReturnParameters": 2320,
                  "id": 2341,
                  "nodeType": "Return",
                  "src": "2755:259:1"
                }
              ]
            },
            "documentation": "@dev Queries a page of the orderbook for the auction that is still accepting orders\n @param tokenFilter all returned order will have buy *and* sell token from this list (leave empty for \"no filter\")\n @param previousPageUser address taken from nextPageUser return value from last page (address(0) for first page)\n @param previousPageUserOffset offset taken nextPageUserOffset return value from last page (0 for first page)\n @param maxPageSize count of elements to be returned per page (same value is used for subqueries on the exchange)\n @return encoded bytes representing orders and page information for next page",
            "id": 2343,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getOpenOrderBookPaginated",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2311,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2304,
                  "name": "tokenFilter",
                  "nodeType": "VariableDeclaration",
                  "scope": 2343,
                  "src": "2354:28:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2302,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2354:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2303,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "2354:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2306,
                  "name": "previousPageUser",
                  "nodeType": "VariableDeclaration",
                  "scope": 2343,
                  "src": "2392:24:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2305,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2392:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2308,
                  "name": "previousPageUserOffset",
                  "nodeType": "VariableDeclaration",
                  "scope": 2343,
                  "src": "2426:29:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 2307,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "2426:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2310,
                  "name": "maxPageSize",
                  "nodeType": "VariableDeclaration",
                  "scope": 2343,
                  "src": "2465:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 2309,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "2465:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2344:145:1"
            },
            "returnParameters": {
              "id": 2320,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2313,
                  "name": "elements",
                  "nodeType": "VariableDeclaration",
                  "scope": 2343,
                  "src": "2548:21:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2312,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2548:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2315,
                  "name": "hasNextPage",
                  "nodeType": "VariableDeclaration",
                  "scope": 2343,
                  "src": "2583:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2314,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2583:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2317,
                  "name": "nextPageUser",
                  "nodeType": "VariableDeclaration",
                  "scope": 2343,
                  "src": "2613:20:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2316,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2613:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2319,
                  "name": "nextPageUserOffset",
                  "nodeType": "VariableDeclaration",
                  "scope": 2343,
                  "src": "2647:25:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 2318,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "2647:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2534:148:1"
            },
            "scope": 3517,
            "src": "2310:711:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2376,
              "nodeType": "Block",
              "src": "3409:329:1",
              "statements": [
                {
                  "assignments": [
                    2352,
                    null,
                    null,
                    null
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2352,
                      "name": "elements",
                      "nodeType": "VariableDeclaration",
                      "scope": 2376,
                      "src": "3420:21:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 2351,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "3420:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    null,
                    null,
                    null
                  ],
                  "id": 2361,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2354,
                        "name": "tokenFilter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2346,
                        "src": "3482:11:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2356,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3503:1:1",
                            "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": 2355,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3495:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 2357,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3495:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2358,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3507:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "id": 2359,
                        "name": "LARGE_PAGE_SIZE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2252,
                        "src": "3510:15:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      ],
                      "id": 2353,
                      "name": "getFinalizedOrderBookPaginated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2421,
                      "src": "3451:30:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$_t_uint16_$_t_uint16_$returns$_t_bytes_memory_ptr_$_t_bool_$_t_address_$_t_uint16_$",
                        "typeString": "function (address[] memory,address,uint16,uint16) view returns (bytes memory,bool,address,uint16)"
                      }
                    },
                    "id": 2360,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3451:75:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_bool_$_t_address_$_t_uint16_$",
                      "typeString": "tuple(bytes memory,bool,address,uint16)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3419:107:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2370,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2363,
                            "name": "elements",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2352,
                            "src": "3557:8:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 2364,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3557:15:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2369,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2366,
                                "name": "LARGE_PAGE_SIZE",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2252,
                                "src": "3583:15:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              ],
                              "id": 2365,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3575:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": "uint256"
                            },
                            "id": 2367,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3575:24:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2368,
                            "name": "INDEXED_AUCTION_ELEMENT_WIDTH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2246,
                            "src": "3602:29:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "3575:56:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3557:74:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f72646572626f6f6b20746f6f206c617267652c2075736520706167696e6174656420766965772066756e6374696f6e73",
                        "id": 2371,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3645:51:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_64c189c1db3114a6270423433e5200886fc8dc45e18ee1766c9d5b6794e49834",
                          "typeString": "literal_string \"Orderbook too large, use paginated view functions\""
                        },
                        "value": "Orderbook too large, use paginated view functions"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_64c189c1db3114a6270423433e5200886fc8dc45e18ee1766c9d5b6794e49834",
                          "typeString": "literal_string \"Orderbook too large, use paginated view functions\""
                        }
                      ],
                      "id": 2362,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10245,
                        10246
                      ],
                      "referencedDeclaration": 10246,
                      "src": "3536:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2372,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3536:170:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2373,
                  "nodeType": "ExpressionStatement",
                  "src": "3536:170:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2374,
                    "name": "elements",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2352,
                    "src": "3723:8:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 2350,
                  "id": 2375,
                  "nodeType": "Return",
                  "src": "3716:15:1"
                }
              ]
            },
            "documentation": "@dev Queries the orderbook for the auction that is currently being solved\n @param tokenFilter all returned order will have buy *and* sell token from this list (leave empty for \"no filter\")\n @return encoded bytes representing orders, maxed at 5000 elements",
            "id": 2377,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getFinalizedOrderBook",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2347,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2346,
                  "name": "tokenFilter",
                  "nodeType": "VariableDeclaration",
                  "scope": 2377,
                  "src": "3344:28:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2344,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "3344:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2345,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "3344:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3343:30:1"
            },
            "returnParameters": {
              "id": 2350,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2349,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2377,
                  "src": "3395:12:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2348,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3395:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3394:14:1"
            },
            "scope": 3517,
            "src": "3313:425:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2420,
              "nodeType": "Block",
              "src": "4791:338:1",
              "statements": [
                {
                  "assignments": [
                    2398
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2398,
                      "name": "batch",
                      "nodeType": "VariableDeclaration",
                      "scope": 2420,
                      "src": "4801:12:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 2397,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4801:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2402,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2399,
                        "name": "batchExchange",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2257,
                        "src": "4816:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_BatchExchange_$2226",
                          "typeString": "contract BatchExchange"
                        }
                      },
                      "id": 2400,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getCurrentBatchId",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3888,
                      "src": "4816:31:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint32_$",
                        "typeString": "function () view external returns (uint32)"
                      }
                    },
                    "id": 2401,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4816:33:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4801:48:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "id": 2406,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2404,
                              "name": "batch",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2398,
                              "src": "4923:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 2405,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4931:1:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "4923:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "id": 2409,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2407,
                              "name": "batch",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2398,
                              "src": "4934:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 2408,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4942:1:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "4934:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2410,
                            "name": "batch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2398,
                            "src": "4945:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          }
                        ],
                        "id": 2411,
                        "isConstant": false,
                        "isInlineArray": true,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "4922:29:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint32_$3_memory_ptr",
                          "typeString": "uint32[3] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2413,
                            "name": "tokenFilter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2380,
                            "src": "4993:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          ],
                          "id": 2412,
                          "name": "getTokenIdsFromAdresses",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3111,
                          "src": "4969:23:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint16_$dyn_memory_ptr_$",
                            "typeString": "function (address[] memory) view returns (uint16[] memory)"
                          }
                        },
                        "id": 2414,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4969:36:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                          "typeString": "uint16[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2415,
                        "name": "previousPageUser",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2382,
                        "src": "5023:16:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2416,
                        "name": "previousPageUserOffset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2384,
                        "src": "5057:22:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2417,
                        "name": "maxPageSize",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2386,
                        "src": "5097:11:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_uint32_$3_memory_ptr",
                          "typeString": "uint32[3] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                          "typeString": "uint16[] memory"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      ],
                      "id": 2403,
                      "name": "getFilteredOrdersPaginated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2649,
                      "src": "4878:26:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_array$_t_uint32_$3_memory_ptr_$_t_array$_t_uint16_$dyn_memory_ptr_$_t_address_$_t_uint16_$_t_uint16_$returns$_t_bytes_memory_ptr_$_t_bool_$_t_address_$_t_uint16_$",
                        "typeString": "function (uint32[3] memory,uint16[] memory,address,uint16,uint16) view returns (bytes memory,bool,address,uint16)"
                      }
                    },
                    "id": 2418,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4878:244:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_bool_$_t_address_$_t_uint16_$",
                      "typeString": "tuple(bytes memory,bool,address,uint16)"
                    }
                  },
                  "functionReturnParameters": 2396,
                  "id": 2419,
                  "nodeType": "Return",
                  "src": "4859:263:1"
                }
              ]
            },
            "documentation": "@dev Queries a page of the orderbook for the auction that is currently being solved\n @param tokenFilter all returned order will have buy *and* sell token from this list (leave empty for \"no filter\")\n @param previousPageUser address taken from nextPageUser return value from last page (address(0) for first page)\n @param previousPageUserOffset offset taken nextPageUserOffset return value from last page (0 for first page)\n @param maxPageSize count of elements to be returned per page (same value is used for subqueries on the exchange)\n @return encoded bytes representing orders and page information for next page",
            "id": 2421,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getFinalizedOrderBookPaginated",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2387,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2380,
                  "name": "tokenFilter",
                  "nodeType": "VariableDeclaration",
                  "scope": 2421,
                  "src": "4458:28:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2378,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "4458:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2379,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "4458:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2382,
                  "name": "previousPageUser",
                  "nodeType": "VariableDeclaration",
                  "scope": 2421,
                  "src": "4496:24:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2381,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4496:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2384,
                  "name": "previousPageUserOffset",
                  "nodeType": "VariableDeclaration",
                  "scope": 2421,
                  "src": "4530:29:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 2383,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "4530:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2386,
                  "name": "maxPageSize",
                  "nodeType": "VariableDeclaration",
                  "scope": 2421,
                  "src": "4569:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 2385,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "4569:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4448:145:1"
            },
            "returnParameters": {
              "id": 2396,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2389,
                  "name": "elements",
                  "nodeType": "VariableDeclaration",
                  "scope": 2421,
                  "src": "4652:21:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2388,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "4652:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2391,
                  "name": "hasNextPage",
                  "nodeType": "VariableDeclaration",
                  "scope": 2421,
                  "src": "4687:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2390,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4687:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2393,
                  "name": "nextPageUser",
                  "nodeType": "VariableDeclaration",
                  "scope": 2421,
                  "src": "4717:20:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2392,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4717:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2395,
                  "name": "nextPageUserOffset",
                  "nodeType": "VariableDeclaration",
                  "scope": 2421,
                  "src": "4751:25:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 2394,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "4751:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4638:148:1"
            },
            "scope": 3517,
            "src": "4409:720:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2648,
              "nodeType": "Block",
              "src": "7017:2828:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2454,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2445,
                      "name": "elements",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2437,
                      "src": "7027:8:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2452,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2449,
                                "name": "maxPageSize",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2434,
                                "src": "7056:11:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              ],
                              "id": 2448,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7048:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": "uint256"
                            },
                            "id": 2450,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7048:20:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2451,
                            "name": "INDEXED_AUCTION_ELEMENT_WIDTH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2246,
                            "src": "7071:29:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "7048:52:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 2447,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "NewExpression",
                        "src": "7038:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$",
                          "typeString": "function (uint256) pure returns (bytes memory)"
                        },
                        "typeName": {
                          "id": 2446,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7042:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        }
                      },
                      "id": 2453,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7038:63:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "7027:74:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "id": 2455,
                  "nodeType": "ExpressionStatement",
                  "src": "7027:74:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2457,
                        "name": "elements",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2437,
                        "src": "7121:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2458,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7131:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 2456,
                      "name": "setLength",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3369,
                      "src": "7111:9:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes memory,uint256) pure"
                      }
                    },
                    "id": 2459,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7111:22:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2460,
                  "nodeType": "ExpressionStatement",
                  "src": "7111:22:1"
                },
                {
                  "assignments": [
                    2462
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2462,
                      "name": "unfiltered",
                      "nodeType": "VariableDeclaration",
                      "scope": 2648,
                      "src": "7143:23:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 2461,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "7143:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2471,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2469,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2466,
                              "name": "maxPageSize",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2434,
                              "src": "7187:11:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            ],
                            "id": 2465,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "7179:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": "uint256"
                          },
                          "id": 2467,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7179:20:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "*",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2468,
                          "name": "AUCTION_ELEMENT_WIDTH",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2241,
                          "src": "7202:21:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "src": "7179:44:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2464,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "7169:9:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$",
                        "typeString": "function (uint256) pure returns (bytes memory)"
                      },
                      "typeName": {
                        "id": 2463,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "7173:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      }
                    },
                    "id": 2470,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7169:55:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7143:81:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2474,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2472,
                      "name": "nextPageUser",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2441,
                      "src": "7234:12:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2473,
                      "name": "previousPageUser",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2430,
                      "src": "7249:16:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "7234:31:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2475,
                  "nodeType": "ExpressionStatement",
                  "src": "7234:31:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2478,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2476,
                      "name": "nextPageUserOffset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2443,
                      "src": "7275:18:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2477,
                      "name": "previousPageUserOffset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2432,
                      "src": "7296:22:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "7275:43:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "id": 2479,
                  "nodeType": "ExpressionStatement",
                  "src": "7275:43:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2482,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2480,
                      "name": "hasNextPage",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2439,
                      "src": "7328:11:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 2481,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7342:4:1",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "7328:18:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2483,
                  "nodeType": "ExpressionStatement",
                  "src": "7328:18:1"
                },
                {
                  "assignments": [
                    2485
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2485,
                      "name": "gasLeftBeforePage",
                      "nodeType": "VariableDeclaration",
                      "scope": 2648,
                      "src": "7356:25:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2484,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7356:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2488,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 2486,
                      "name": "gasleft",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10235,
                      "src": "7384:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                        "typeString": "function () view returns (uint256)"
                      }
                    },
                    "id": 2487,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7384:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7356:37:1"
                },
                {
                  "body": {
                    "id": 2640,
                    "nodeType": "Block",
                    "src": "7570:2195:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2502,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2499,
                            "name": "gasLeftBeforePage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2485,
                            "src": "7584:17:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 2500,
                              "name": "gasleft",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10235,
                              "src": "7604:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                                "typeString": "function () view returns (uint256)"
                              }
                            },
                            "id": 2501,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7604:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7584:29:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2503,
                        "nodeType": "ExpressionStatement",
                        "src": "7584:29:1"
                      },
                      {
                        "assignments": [
                          2505
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2505,
                            "name": "unfilteredCount",
                            "nodeType": "VariableDeclaration",
                            "scope": 2640,
                            "src": "7627:23:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2504,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7627:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2512,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2507,
                              "name": "tokenFilter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2428,
                              "src": "7713:11:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                                "typeString": "uint16[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2508,
                              "name": "nextPageUser",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2441,
                              "src": "7742:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2509,
                              "name": "nextPageUserOffset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2443,
                              "src": "7772:18:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2510,
                              "name": "unfiltered",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2462,
                              "src": "7808:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                                "typeString": "uint16[] memory"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 2506,
                            "name": "writeEncodedOrdersPaginatedWithTokenFilter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2839,
                            "src": "7653:42:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_array$_t_uint16_$dyn_memory_ptr_$_t_address_$_t_uint16_$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                              "typeString": "function (uint16[] memory,address,uint16,bytes memory) view returns (uint256)"
                            }
                          },
                          "id": 2511,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7653:179:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7627:205:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2517,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2513,
                            "name": "hasNextPage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2439,
                            "src": "7846:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2516,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2514,
                              "name": "unfilteredCount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2505,
                              "src": "7860:15:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2515,
                              "name": "maxPageSize",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2434,
                              "src": "7879:11:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            "src": "7860:30:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7846:44:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2518,
                        "nodeType": "ExpressionStatement",
                        "src": "7846:44:1"
                      },
                      {
                        "body": {
                          "id": 2638,
                          "nodeType": "Block",
                          "src": "7961:1794:1",
                          "statements": [
                            {
                              "assignments": [
                                2530
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2530,
                                  "name": "element",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2638,
                                  "src": "8056:20:1",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes"
                                  },
                                  "typeName": {
                                    "id": 2529,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8056:5:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_storage_ptr",
                                      "typeString": "bytes"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2540,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2537,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 2534,
                                          "name": "index",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2520,
                                          "src": "8104:5:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint16",
                                            "typeString": "uint16"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint16",
                                            "typeString": "uint16"
                                          }
                                        ],
                                        "id": 2533,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "8096:7:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint256_$",
                                          "typeString": "type(uint256)"
                                        },
                                        "typeName": "uint256"
                                      },
                                      "id": 2535,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8096:14:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 2536,
                                      "name": "AUCTION_ELEMENT_WIDTH",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2241,
                                      "src": "8113:21:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "src": "8096:38:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2538,
                                    "name": "AUCTION_ELEMENT_WIDTH",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2241,
                                    "src": "8136:21:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2531,
                                    "name": "unfiltered",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2462,
                                    "src": "8079:10:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 2532,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "slice",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 9877,
                                  "src": "8079:16:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                                  }
                                },
                                "id": 2539,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8079:79:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "8056:102:1"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2548,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 2541,
                                  "name": "element",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2530,
                                  "src": "8176:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2543,
                                      "name": "element",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2530,
                                      "src": "8219:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 2544,
                                        "name": "batchIds",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2425,
                                        "src": "8228:8:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint32_$3_memory_ptr",
                                          "typeString": "uint32[3] memory"
                                        }
                                      },
                                      "id": 2546,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "32",
                                        "id": 2545,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8237:1:1",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_2_by_1",
                                          "typeString": "int_const 2"
                                        },
                                        "value": "2"
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "8228:11:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      },
                                      {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    ],
                                    "id": 2542,
                                    "name": "updateSellTokenBalanceForBatchId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3211,
                                    "src": "8186:32:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$_t_uint32_$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function (bytes memory,uint32) view returns (bytes memory)"
                                    }
                                  },
                                  "id": 2547,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8186:54:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "src": "8176:64:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 2549,
                              "nodeType": "ExpressionStatement",
                              "src": "8176:64:1"
                            },
                            {
                              "assignments": [
                                2551
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2551,
                                  "name": "user",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2638,
                                  "src": "8300:12:1",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 2550,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8300:7:1",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2555,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2553,
                                    "name": "element",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2530,
                                    "src": "8323:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 2552,
                                  "name": "getUser",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2928,
                                  "src": "8315:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$",
                                    "typeString": "function (bytes memory) pure returns (address)"
                                  }
                                },
                                "id": 2554,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8315:16:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "8300:31:1"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 2558,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2556,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2551,
                                  "src": "8353:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2557,
                                  "name": "nextPageUser",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2441,
                                  "src": "8361:12:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "8353:20:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 2572,
                                "nodeType": "Block",
                                "src": "8445:104:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2566,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 2564,
                                        "name": "nextPageUserOffset",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2443,
                                        "src": "8467:18:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "hexValue": "31",
                                        "id": 2565,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8488:1:1",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "8467:22:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    },
                                    "id": 2567,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8467:22:1"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2570,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 2568,
                                        "name": "nextPageUser",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2441,
                                        "src": "8511:12:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "id": 2569,
                                        "name": "user",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2551,
                                        "src": "8526:4:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "8511:19:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "id": 2571,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8511:19:1"
                                  }
                                ]
                              },
                              "id": 2573,
                              "nodeType": "IfStatement",
                              "src": "8349:200:1",
                              "trueBody": {
                                "id": 2563,
                                "nodeType": "Block",
                                "src": "8375:64:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2561,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 2559,
                                        "name": "nextPageUserOffset",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2443,
                                        "src": "8397:18:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "+=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "hexValue": "31",
                                        "id": 2560,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8419:1:1",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "8397:23:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    },
                                    "id": 2562,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8397:23:1"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 2588,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  },
                                  "id": 2580,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 2574,
                                      "name": "batchIds",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2425,
                                      "src": "8570:8:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint32_$3_memory_ptr",
                                        "typeString": "uint32[3] memory"
                                      }
                                    },
                                    "id": 2576,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 2575,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "8579:1:1",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "8570:11:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2578,
                                        "name": "element",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2530,
                                        "src": "8598:7:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "id": 2577,
                                      "name": "getValidFrom",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3043,
                                      "src": "8585:12:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint32_$",
                                        "typeString": "function (bytes memory) pure returns (uint32)"
                                      }
                                    },
                                    "id": 2579,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8585:21:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "src": "8570:36:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  },
                                  "id": 2587,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 2581,
                                      "name": "batchIds",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2425,
                                      "src": "8610:8:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint32_$3_memory_ptr",
                                        "typeString": "uint32[3] memory"
                                      }
                                    },
                                    "id": 2583,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 2582,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "8619:1:1",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "8610:11:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2585,
                                        "name": "element",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2530,
                                        "src": "8639:7:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "id": 2584,
                                      "name": "getValidUntil",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3064,
                                      "src": "8625:13:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint32_$",
                                        "typeString": "function (bytes memory) pure returns (uint32)"
                                      }
                                    },
                                    "id": 2586,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8625:22:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "src": "8610:37:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "8570:77:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 2623,
                              "nodeType": "IfStatement",
                              "src": "8566:637:1",
                              "trueBody": {
                                "id": 2622,
                                "nodeType": "Block",
                                "src": "8649:554:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 2590,
                                          "name": "elements",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2437,
                                          "src": "8681:8:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 2594,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 2591,
                                              "name": "elements",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2437,
                                              "src": "8691:8:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            },
                                            "id": 2592,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "length",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "8691:15:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "+",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 2593,
                                            "name": "INDEXED_AUCTION_ELEMENT_WIDTH",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2246,
                                            "src": "8709:29:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          },
                                          "src": "8691:47:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 2589,
                                        "name": "setLength",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3369,
                                        "src": "8671:9:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$__$",
                                          "typeString": "function (bytes memory,uint256) pure"
                                        }
                                      },
                                      "id": 2595,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8671:68:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 2596,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8671:68:1"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 2598,
                                          "name": "element",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2530,
                                          "src": "8773:7:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2599,
                                          "name": "elements",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2437,
                                          "src": "8782:8:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 2603,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 2600,
                                              "name": "elements",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2437,
                                              "src": "8792:8:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            },
                                            "id": 2601,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "length",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "8792:15:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 2602,
                                            "name": "INDEXED_AUCTION_ELEMENT_WIDTH",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2246,
                                            "src": "8810:29:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          },
                                          "src": "8792:47:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 2597,
                                        "name": "copyInPlace",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3402,
                                        "src": "8761:11:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$",
                                          "typeString": "function (bytes memory,bytes memory,uint256) pure"
                                        }
                                      },
                                      "id": 2604,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8761:79:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 2605,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8761:79:1"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_uint16",
                                                "typeString": "uint16"
                                              },
                                              "id": 2611,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "argumentTypes": null,
                                                "id": 2609,
                                                "name": "nextPageUserOffset",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2443,
                                                "src": "9008:18:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint16",
                                                  "typeString": "uint16"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "-",
                                              "rightExpression": {
                                                "argumentTypes": null,
                                                "hexValue": "31",
                                                "id": 2610,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "9029:1:1",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_1_by_1",
                                                  "typeString": "int_const 1"
                                                },
                                                "value": "1"
                                              },
                                              "src": "9008:22:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint16",
                                                "typeString": "uint16"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint16",
                                                "typeString": "uint16"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 2607,
                                              "name": "abi",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 10229,
                                              "src": "8991:3:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_magic_abi",
                                                "typeString": "abi"
                                              }
                                            },
                                            "id": 2608,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "encodePacked",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "8991:16:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                              "typeString": "function () pure returns (bytes memory)"
                                            }
                                          },
                                          "id": 2612,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "8991:40:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2613,
                                          "name": "elements",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2437,
                                          "src": "9057:8:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 2619,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 2617,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 2614,
                                                "name": "elements",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2437,
                                                "src": "9091:8:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              },
                                              "id": 2615,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "length",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": null,
                                              "src": "9091:15:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "-",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "id": 2616,
                                              "name": "INDEXED_AUCTION_ELEMENT_WIDTH",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2246,
                                              "src": "9109:29:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "src": "9091:47:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "+",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 2618,
                                            "name": "AUCTION_ELEMENT_WIDTH",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2241,
                                            "src": "9141:21:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          },
                                          "src": "9091:71:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 2606,
                                        "name": "copyInPlace",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3402,
                                        "src": "8954:11:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$",
                                          "typeString": "function (bytes memory,bytes memory,uint256) pure"
                                        }
                                      },
                                      "id": 2620,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8954:230:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 2621,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8954:230:1"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2629,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2624,
                                    "name": "elements",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2437,
                                    "src": "9224:8:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 2625,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "9224:15:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  },
                                  "id": 2628,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2626,
                                    "name": "maxPageSize",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2434,
                                    "src": "9243:11:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 2627,
                                    "name": "INDEXED_AUCTION_ELEMENT_WIDTH",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2246,
                                    "src": "9257:29:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "src": "9243:43:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "src": "9224:62:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 2637,
                              "nodeType": "IfStatement",
                              "src": "9220:521:1",
                              "trueBody": {
                                "id": 2636,
                                "nodeType": "Block",
                                "src": "9288:453:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "id": 2630,
                                          "name": "elements",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2437,
                                          "src": "9673:8:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "74727565",
                                          "id": 2631,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "bool",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "9683:4:1",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          "value": "true"
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2632,
                                          "name": "nextPageUser",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2441,
                                          "src": "9689:12:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2633,
                                          "name": "nextPageUserOffset",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2443,
                                          "src": "9703:18:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint16",
                                            "typeString": "uint16"
                                          }
                                        }
                                      ],
                                      "id": 2634,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "9672:50:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_bool_$_t_address_$_t_uint16_$",
                                        "typeString": "tuple(bytes memory,bool,address,uint16)"
                                      }
                                    },
                                    "functionReturnParameters": 2444,
                                    "id": 2635,
                                    "nodeType": "Return",
                                    "src": "9665:57:1"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2525,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2523,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2520,
                            "src": "7927:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2524,
                            "name": "unfilteredCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2505,
                            "src": "7935:15:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7927:23:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2639,
                        "initializationExpression": {
                          "assignments": [
                            2520
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 2520,
                              "name": "index",
                              "nodeType": "VariableDeclaration",
                              "scope": 2639,
                              "src": "7909:12:1",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              },
                              "typeName": {
                                "id": 2519,
                                "name": "uint16",
                                "nodeType": "ElementaryTypeName",
                                "src": "7909:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 2522,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2521,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7924:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "7909:16:1"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 2527,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "7952:7:1",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 2526,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2520,
                              "src": "7952:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "id": 2528,
                          "nodeType": "ExpressionStatement",
                          "src": "7952:7:1"
                        },
                        "nodeType": "ForStatement",
                        "src": "7904:1851:1"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 2498,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2489,
                      "name": "hasNextPage",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2439,
                      "src": "7516:11:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 2497,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2493,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "hexValue": "35",
                          "id": 2490,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7531:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_5_by_1",
                            "typeString": "int_const 5"
                          },
                          "value": "5"
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "*",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 2491,
                            "name": "gasleft",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10235,
                            "src": "7535:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                              "typeString": "function () view returns (uint256)"
                            }
                          },
                          "id": 2492,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7535:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7531:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2496,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "hexValue": "33",
                          "id": 2494,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7547:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_3_by_1",
                            "typeString": "int_const 3"
                          },
                          "value": "3"
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "*",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2495,
                          "name": "gasLeftBeforePage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2485,
                          "src": "7551:17:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7547:21:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "7531:37:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "7516:52:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2641,
                  "nodeType": "WhileStatement",
                  "src": "7509:2256:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 2642,
                        "name": "elements",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2437,
                        "src": "9782:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2643,
                        "name": "hasNextPage",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2439,
                        "src": "9792:11:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2644,
                        "name": "nextPageUser",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2441,
                        "src": "9805:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2645,
                        "name": "nextPageUserOffset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2443,
                        "src": "9819:18:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      }
                    ],
                    "id": 2646,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "9781:57:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_bool_$_t_address_$_t_uint16_$",
                      "typeString": "tuple(bytes memory,bool,address,uint16)"
                    }
                  },
                  "functionReturnParameters": 2444,
                  "id": 2647,
                  "nodeType": "Return",
                  "src": "9774:64:1"
                }
              ]
            },
            "documentation": "@dev Queries a page in the list of all orders\n @param batchIds Triple with the following values [maxValidFrom, minValidUntil, sellBalanceTargetBatchIndex]\n Batched together as we are running out of local variables (Solidity does not compile with Stack too deep error)\n     - maxValidFrom: all returned orders will have a validFrom <= this value (they were placed at or before that batch)\n     - minValidUntil all returned orders will have a validUntil >= this value (validity ends at or after that batch)\n     - sellBalanceTargetBatchIndex the batchIndex at which we are expecting the sellTokenBalance to be valid\n(e.g. in the current live orderbook we want to include sellBalances that are valid in currentBatch + 1).\n @param tokenFilter all returned order will have buy *and* sell token from this list (leave empty for \"no filter\")\n @param previousPageUser address taken from nextPageUser return value from last page (address(0) for first page)\n @param previousPageUserOffset offset taken nextPageUserOffset return value from last page (0 for first page)\n @param maxPageSize maximum count of elements to be returned per page (same value is used for subqueries on the exchange)\n @return encoded bytes representing orders and page information for next page. Result can contain less elements than\n maxPageSize if remaining gas is low.",
            "id": 2649,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getFilteredOrdersPaginated",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2435,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2425,
                  "name": "batchIds",
                  "nodeType": "VariableDeclaration",
                  "scope": 2649,
                  "src": "6615:25:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint32_$3_memory_ptr",
                    "typeString": "uint32[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2422,
                      "name": "uint32",
                      "nodeType": "ElementaryTypeName",
                      "src": "6615:6:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "id": 2424,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 2423,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6622:1:1",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_3_by_1",
                        "typeString": "int_const 3"
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "6615:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint32_$3_storage_ptr",
                      "typeString": "uint32[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2428,
                  "name": "tokenFilter",
                  "nodeType": "VariableDeclaration",
                  "scope": 2649,
                  "src": "6685:27:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                    "typeString": "uint16[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2426,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "6685:6:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 2427,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "6685:8:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$dyn_storage_ptr",
                      "typeString": "uint16[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2430,
                  "name": "previousPageUser",
                  "nodeType": "VariableDeclaration",
                  "scope": 2649,
                  "src": "6722:24:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2429,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6722:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2432,
                  "name": "previousPageUserOffset",
                  "nodeType": "VariableDeclaration",
                  "scope": 2649,
                  "src": "6756:29:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 2431,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "6756:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2434,
                  "name": "maxPageSize",
                  "nodeType": "VariableDeclaration",
                  "scope": 2649,
                  "src": "6795:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 2433,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "6795:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6605:214:1"
            },
            "returnParameters": {
              "id": 2444,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2437,
                  "name": "elements",
                  "nodeType": "VariableDeclaration",
                  "scope": 2649,
                  "src": "6878:21:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2436,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "6878:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2439,
                  "name": "hasNextPage",
                  "nodeType": "VariableDeclaration",
                  "scope": 2649,
                  "src": "6913:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2438,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6913:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2441,
                  "name": "nextPageUser",
                  "nodeType": "VariableDeclaration",
                  "scope": 2649,
                  "src": "6943:20:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2440,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6943:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2443,
                  "name": "nextPageUserOffset",
                  "nodeType": "VariableDeclaration",
                  "scope": 2649,
                  "src": "6977:25:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 2442,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "6977:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6864:148:1"
            },
            "scope": 3517,
            "src": "6570:3275:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2667,
              "nodeType": "Block",
              "src": "10637:134:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2661,
                        "name": "ALL_TOKEN_FILTER",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2255,
                        "src": "10695:16:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint16_$dyn_storage",
                          "typeString": "uint16[] storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2662,
                        "name": "previousPageUser",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2651,
                        "src": "10713:16:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2663,
                        "name": "previousPageUserOffset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2653,
                        "src": "10731:22:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2664,
                        "name": "pageSize",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2655,
                        "src": "10755:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_uint16_$dyn_storage",
                          "typeString": "uint16[] storage ref"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2660,
                      "name": "getEncodedOrdersPaginatedWithTokenFilter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2710,
                      "src": "10654:40:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_array$_t_uint16_$dyn_memory_ptr_$_t_address_$_t_uint16_$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (uint16[] memory,address,uint16,uint256) view returns (bytes memory)"
                      }
                    },
                    "id": 2665,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10654:110:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 2659,
                  "id": 2666,
                  "nodeType": "Return",
                  "src": "10647:117:1"
                }
              ]
            },
            "documentation": "@dev View returning byte-encoded sell orders in paginated form. It has the same behavior as\nBatchExchange.getEncodedUsersPaginated but uses less memory and thus is more gas efficient.\n@param previousPageUser address of last user received in the previous page (address(0) for first page)\n@param previousPageUserOffset the number of orders received for the last user on the previous page (0 for first page).\n@param pageSize uint determining the count of orders to be returned per page\n@return encoded bytes representing a page of orders ordered by (user, index)",
            "id": 2668,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getEncodedOrdersPaginated",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2656,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2651,
                  "name": "previousPageUser",
                  "nodeType": "VariableDeclaration",
                  "scope": 2668,
                  "src": "10506:24:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2650,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10506:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2653,
                  "name": "previousPageUserOffset",
                  "nodeType": "VariableDeclaration",
                  "scope": 2668,
                  "src": "10540:29:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 2652,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "10540:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2655,
                  "name": "pageSize",
                  "nodeType": "VariableDeclaration",
                  "scope": 2668,
                  "src": "10579:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2654,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10579:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10496:105:1"
            },
            "returnParameters": {
              "id": 2659,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2658,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2668,
                  "src": "10623:12:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2657,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "10623:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10622:14:1"
            },
            "scope": 3517,
            "src": "10462:309:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2709,
              "nodeType": "Block",
              "src": "11004:370:1",
              "statements": [
                {
                  "assignments": [
                    2683
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2683,
                      "name": "elements",
                      "nodeType": "VariableDeclaration",
                      "scope": 2709,
                      "src": "11014:21:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 2682,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "11014:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2690,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2688,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2686,
                          "name": "pageSize",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2677,
                          "src": "11048:8:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "*",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2687,
                          "name": "AUCTION_ELEMENT_WIDTH",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2241,
                          "src": "11059:21:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "src": "11048:32:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2685,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "11038:9:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$",
                        "typeString": "function (uint256) pure returns (bytes memory)"
                      },
                      "typeName": {
                        "id": 2684,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "11042:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      }
                    },
                    "id": 2689,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11038:43:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11014:67:1"
                },
                {
                  "assignments": [
                    2692
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2692,
                      "name": "orderCount",
                      "nodeType": "VariableDeclaration",
                      "scope": 2709,
                      "src": "11091:18:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2691,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11091:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2699,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2694,
                        "name": "tokenFilter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2671,
                        "src": "11168:11:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                          "typeString": "uint16[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2695,
                        "name": "previousPageUser",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2673,
                        "src": "11193:16:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2696,
                        "name": "previousPageUserOffset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2675,
                        "src": "11223:22:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2697,
                        "name": "elements",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2683,
                        "src": "11259:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                          "typeString": "uint16[] memory"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 2693,
                      "name": "writeEncodedOrdersPaginatedWithTokenFilter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2839,
                      "src": "11112:42:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_array$_t_uint16_$dyn_memory_ptr_$_t_address_$_t_uint16_$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                        "typeString": "function (uint16[] memory,address,uint16,bytes memory) view returns (uint256)"
                      }
                    },
                    "id": 2698,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11112:165:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11091:186:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2701,
                        "name": "elements",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2683,
                        "src": "11297:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2704,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2702,
                          "name": "orderCount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2692,
                          "src": "11307:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "*",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2703,
                          "name": "AUCTION_ELEMENT_WIDTH",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2241,
                          "src": "11320:21:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "src": "11307:34:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2700,
                      "name": "setLength",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3369,
                      "src": "11287:9:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes memory,uint256) pure"
                      }
                    },
                    "id": 2705,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11287:55:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2706,
                  "nodeType": "ExpressionStatement",
                  "src": "11287:55:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2707,
                    "name": "elements",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2683,
                    "src": "11359:8:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 2681,
                  "id": 2708,
                  "nodeType": "Return",
                  "src": "11352:15:1"
                }
              ]
            },
            "documentation": null,
            "id": 2710,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getEncodedOrdersPaginatedWithTokenFilter",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2678,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2671,
                  "name": "tokenFilter",
                  "nodeType": "VariableDeclaration",
                  "scope": 2710,
                  "src": "10836:27:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                    "typeString": "uint16[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2669,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "10836:6:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 2670,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "10836:8:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$dyn_storage_ptr",
                      "typeString": "uint16[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2673,
                  "name": "previousPageUser",
                  "nodeType": "VariableDeclaration",
                  "scope": 2710,
                  "src": "10873:24:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2672,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10873:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2675,
                  "name": "previousPageUserOffset",
                  "nodeType": "VariableDeclaration",
                  "scope": 2710,
                  "src": "10907:29:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 2674,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "10907:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2677,
                  "name": "pageSize",
                  "nodeType": "VariableDeclaration",
                  "scope": 2710,
                  "src": "10946:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2676,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10946:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10826:142:1"
            },
            "returnParameters": {
              "id": 2681,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2680,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2710,
                  "src": "10990:12:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2679,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "10990:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10989:14:1"
            },
            "scope": 3517,
            "src": "10777:597:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2838,
              "nodeType": "Block",
              "src": "11609:1495:1",
              "statements": [
                {
                  "assignments": [
                    2725
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2725,
                      "name": "pageSize",
                      "nodeType": "VariableDeclaration",
                      "scope": 2838,
                      "src": "11619:16:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2724,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11619:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2730,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2729,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2726,
                        "name": "elements",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2719,
                        "src": "11638:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 2727,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "11638:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2728,
                      "name": "AUCTION_ELEMENT_WIDTH",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2241,
                      "src": "11656:21:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "11638:39:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11619:58:1"
                },
                {
                  "assignments": [
                    2732
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2732,
                      "name": "users",
                      "nodeType": "VariableDeclaration",
                      "scope": 2838,
                      "src": "11687:18:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 2731,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "11687:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2740,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2735,
                        "name": "previousPageUser",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2715,
                        "src": "11740:16:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2737,
                            "name": "pageSize",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2725,
                            "src": "11765:8:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 2736,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "11758:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint16_$",
                            "typeString": "type(uint16)"
                          },
                          "typeName": "uint16"
                        },
                        "id": 2738,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11758:16:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2733,
                        "name": "batchExchange",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2257,
                        "src": "11708:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_BatchExchange_$2226",
                          "typeString": "contract BatchExchange"
                        }
                      },
                      "id": 2734,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getUsersPaginated",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1065,
                      "src": "11708:31:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$_t_uint16_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (address,uint16) view external returns (bytes memory)"
                      }
                    },
                    "id": 2739,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11708:67:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11687:88:1"
                },
                {
                  "assignments": [
                    2742
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2742,
                      "name": "currentOffset",
                      "nodeType": "VariableDeclaration",
                      "scope": 2838,
                      "src": "11785:20:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 2741,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "11785:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2744,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 2743,
                    "name": "previousPageUserOffset",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2717,
                    "src": "11808:22:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11785:45:1"
                },
                {
                  "assignments": [
                    2746
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2746,
                      "name": "currentUser",
                      "nodeType": "VariableDeclaration",
                      "scope": 2838,
                      "src": "11840:19:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2745,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "11840:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2748,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 2747,
                    "name": "previousPageUser",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2715,
                    "src": "11862:16:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11840:38:1"
                },
                {
                  "assignments": [
                    2750
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2750,
                      "name": "orderIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 2838,
                      "src": "11888:18:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2749,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11888:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2752,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 2751,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "11909:1:1",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11888:22:1"
                },
                {
                  "assignments": [
                    2754
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2754,
                      "name": "userIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 2838,
                      "src": "11920:17:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2753,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11920:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2756,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 2755,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "11940:1:1",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11920:21:1"
                },
                {
                  "body": {
                    "id": 2834,
                    "nodeType": "Block",
                    "src": "11981:1090:1",
                    "statements": [
                      {
                        "assignments": [
                          2761,
                          2763
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2761,
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "scope": 2834,
                            "src": "12301:12:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 2760,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "12301:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 2763,
                            "name": "order",
                            "nodeType": "VariableDeclaration",
                            "scope": 2834,
                            "src": "12315:18:1",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 2762,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "12315:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2778,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "6f726465727328616464726573732c75696e7432353629",
                                  "id": 2773,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12422:25:1",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_793b8c6dae53b1dfde0a75c3de6c1c6dd9f4122c71d17362e684c126340feea5",
                                    "typeString": "literal_string \"orders(address,uint256)\""
                                  },
                                  "value": "orders(address,uint256)"
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 2774,
                                  "name": "currentUser",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2746,
                                  "src": "12449:11:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 2775,
                                  "name": "currentOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2742,
                                  "src": "12462:13:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_793b8c6dae53b1dfde0a75c3de6c1c6dd9f4122c71d17362e684c126340feea5",
                                    "typeString": "literal_string \"orders(address,uint256)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2771,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10229,
                                  "src": "12398:3:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 2772,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "12398:23:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 2776,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12398:78:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "35303030",
                                "id": 2769,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12375:4:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_5000_by_1",
                                  "typeString": "int_const 5000"
                                },
                                "value": "5000"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_5000_by_1",
                                  "typeString": "int_const 5000"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2765,
                                      "name": "batchExchange",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2257,
                                      "src": "12345:13:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_BatchExchange_$2226",
                                        "typeString": "contract BatchExchange"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_BatchExchange_$2226",
                                        "typeString": "contract BatchExchange"
                                      }
                                    ],
                                    "id": 2764,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "12337:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 2766,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12337:22:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 2767,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "staticcall",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "12337:33:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                                }
                              },
                              "id": 2768,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "gas",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "12337:37:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_setgas_pure$_t_uint256_$returns$_t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$gas_$",
                                "typeString": "function (uint256) pure returns (function (bytes memory) view returns (bool,bytes memory))"
                              }
                            },
                            "id": 2770,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12337:43:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$gas",
                              "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 2777,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12337:153:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12300:190:1"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 2779,
                          "name": "success",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2761,
                          "src": "12508:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 2832,
                          "nodeType": "Block",
                          "src": "12724:337:1",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2801,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 2799,
                                  "name": "currentOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2742,
                                  "src": "12742:13:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2800,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12758:1:1",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "12742:17:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "id": 2802,
                              "nodeType": "ExpressionStatement",
                              "src": "12742:17:1"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2811,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2803,
                                    "name": "users",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2732,
                                    "src": "12781:5:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 2804,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "12781:12:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2810,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 2807,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 2805,
                                          "name": "userIndex",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2754,
                                          "src": "12798:9:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 2806,
                                          "name": "ADDRESS_WIDTH",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2249,
                                          "src": "12810:13:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "src": "12798:25:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 2808,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "12797:27:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 2809,
                                    "name": "ADDRESS_WIDTH",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2249,
                                    "src": "12827:13:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "src": "12797:43:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "12781:59:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 2830,
                                "nodeType": "Block",
                                "src": "13001:46:1",
                                "statements": [
                                  {
                                    "id": 2829,
                                    "nodeType": "Break",
                                    "src": "13023:5:1"
                                  }
                                ]
                              },
                              "id": 2831,
                              "nodeType": "IfStatement",
                              "src": "12777:270:1",
                              "trueBody": {
                                "id": 2828,
                                "nodeType": "Block",
                                "src": "12842:153:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2822,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 2812,
                                        "name": "currentUser",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2746,
                                        "src": "12864:11:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 2818,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "argumentTypes": null,
                                                  "id": 2816,
                                                  "name": "userIndex",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 2754,
                                                  "src": "12898:9:1",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "*",
                                                "rightExpression": {
                                                  "argumentTypes": null,
                                                  "id": 2817,
                                                  "name": "ADDRESS_WIDTH",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 2249,
                                                  "src": "12910:13:1",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                  }
                                                },
                                                "src": "12898:25:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "id": 2819,
                                                "name": "ADDRESS_WIDTH",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2249,
                                                "src": "12925:13:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint8",
                                                  "typeString": "uint8"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint8",
                                                  "typeString": "uint8"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 2814,
                                                "name": "users",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2732,
                                                "src": "12886:5:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              },
                                              "id": 2815,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "slice",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 9877,
                                              "src": "12886:11:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                                                "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                                              }
                                            },
                                            "id": 2820,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "12886:53:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          ],
                                          "id": 2813,
                                          "name": "getUser",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2928,
                                          "src": "12878:7:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$",
                                            "typeString": "function (bytes memory) pure returns (address)"
                                          }
                                        },
                                        "id": 2821,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "12878:62:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "12864:76:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "id": 2823,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12864:76:1"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2826,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 2824,
                                        "name": "userIndex",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2754,
                                        "src": "12962:9:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "+=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "hexValue": "31",
                                        "id": 2825,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "12975:1:1",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "12962:14:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2827,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12962:14:1"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "id": 2833,
                        "nodeType": "IfStatement",
                        "src": "12504:557:1",
                        "trueBody": {
                          "id": 2798,
                          "nodeType": "Block",
                          "src": "12517:201:1",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2782,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 2780,
                                  "name": "currentOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2742,
                                  "src": "12535:13:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 2781,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12552:1:1",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "12535:18:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "id": 2783,
                              "nodeType": "ExpressionStatement",
                              "src": "12535:18:1"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2785,
                                    "name": "tokenFilter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2713,
                                    "src": "12592:11:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                                      "typeString": "uint16[] memory"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2786,
                                    "name": "currentUser",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2746,
                                    "src": "12605:11:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2787,
                                    "name": "order",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2763,
                                    "src": "12618:5:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2788,
                                    "name": "elements",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2719,
                                    "src": "12625:8:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2791,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 2789,
                                      "name": "orderIndex",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2750,
                                      "src": "12635:10:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 2790,
                                      "name": "AUCTION_ELEMENT_WIDTH",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2241,
                                      "src": "12648:21:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "src": "12635:34:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                                      "typeString": "uint16[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 2784,
                                  "name": "encodeAuctionElement",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3516,
                                  "src": "12571:20:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_array$_t_uint16_$dyn_memory_ptr_$_t_address_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint16[] memory,address,bytes memory,bytes memory,uint256) view"
                                  }
                                },
                                "id": 2792,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12571:99:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2793,
                              "nodeType": "ExpressionStatement",
                              "src": "12571:99:1"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2796,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 2794,
                                  "name": "orderIndex",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2750,
                                  "src": "12688:10:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 2795,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12702:1:1",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "12688:15:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2797,
                              "nodeType": "ExpressionStatement",
                              "src": "12688:15:1"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2759,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2757,
                      "name": "orderIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2750,
                      "src": "11958:10:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2758,
                      "name": "pageSize",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2725,
                      "src": "11971:8:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11958:21:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2835,
                  "nodeType": "WhileStatement",
                  "src": "11951:1120:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2836,
                    "name": "orderIndex",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2750,
                    "src": "13087:10:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2723,
                  "id": 2837,
                  "nodeType": "Return",
                  "src": "13080:17:1"
                }
              ]
            },
            "documentation": null,
            "id": 2839,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "writeEncodedOrdersPaginatedWithTokenFilter",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2720,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2713,
                  "name": "tokenFilter",
                  "nodeType": "VariableDeclaration",
                  "scope": 2839,
                  "src": "11441:27:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                    "typeString": "uint16[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2711,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "11441:6:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 2712,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "11441:8:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$dyn_storage_ptr",
                      "typeString": "uint16[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2715,
                  "name": "previousPageUser",
                  "nodeType": "VariableDeclaration",
                  "scope": 2839,
                  "src": "11478:24:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2714,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11478:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2717,
                  "name": "previousPageUserOffset",
                  "nodeType": "VariableDeclaration",
                  "scope": 2839,
                  "src": "11512:29:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 2716,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "11512:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2719,
                  "name": "elements",
                  "nodeType": "VariableDeclaration",
                  "scope": 2839,
                  "src": "11551:21:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2718,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "11551:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11431:147:1"
            },
            "returnParameters": {
              "id": 2723,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2722,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2839,
                  "src": "11600:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2721,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11600:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11599:9:1"
            },
            "scope": 3517,
            "src": "11380:1724:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2906,
              "nodeType": "Block",
              "src": "13254:522:1",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2854,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2851,
                        "name": "filter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2846,
                        "src": "13326:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                          "typeString": "uint16[] memory"
                        }
                      },
                      "id": 2852,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "13326:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2853,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "13343:1:1",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "13326:18:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2858,
                  "nodeType": "IfStatement",
                  "src": "13322:60:1",
                  "trueBody": {
                    "id": 2857,
                    "nodeType": "Block",
                    "src": "13346:36:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 2855,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "13367:4:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 2850,
                        "id": 2856,
                        "nodeType": "Return",
                        "src": "13360:11:1"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    2860,
                    2862
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2860,
                      "name": "foundBuyToken",
                      "nodeType": "VariableDeclaration",
                      "scope": 2906,
                      "src": "13392:18:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 2859,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "13392:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2862,
                      "name": "foundSellToken",
                      "nodeType": "VariableDeclaration",
                      "scope": 2906,
                      "src": "13412:19:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 2861,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "13412:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2866,
                  "initialValue": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 2863,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "13436:5:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 2864,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "13443:5:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      }
                    ],
                    "id": 2865,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "13435:14:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bool_$",
                      "typeString": "tuple(bool,bool)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13391:58:1"
                },
                {
                  "body": {
                    "id": 2900,
                    "nodeType": "Block",
                    "src": "13515:207:1",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          },
                          "id": 2882,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2878,
                              "name": "filter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2846,
                              "src": "13533:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                                "typeString": "uint16[] memory"
                              }
                            },
                            "id": 2880,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2879,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2868,
                              "src": "13540:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "13533:13:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2881,
                            "name": "buyToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2841,
                            "src": "13550:8:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "src": "13533:25:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2888,
                        "nodeType": "IfStatement",
                        "src": "13529:84:1",
                        "trueBody": {
                          "id": 2887,
                          "nodeType": "Block",
                          "src": "13560:53:1",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2885,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 2883,
                                  "name": "foundBuyToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2860,
                                  "src": "13578:13:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "74727565",
                                  "id": 2884,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13594:4:1",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                },
                                "src": "13578:20:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 2886,
                              "nodeType": "ExpressionStatement",
                              "src": "13578:20:1"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          },
                          "id": 2893,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2889,
                              "name": "filter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2846,
                              "src": "13630:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                                "typeString": "uint16[] memory"
                              }
                            },
                            "id": 2891,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2890,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2868,
                              "src": "13637:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "13630:13:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2892,
                            "name": "sellToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2843,
                            "src": "13647:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "src": "13630:26:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2899,
                        "nodeType": "IfStatement",
                        "src": "13626:86:1",
                        "trueBody": {
                          "id": 2898,
                          "nodeType": "Block",
                          "src": "13658:54:1",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2896,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 2894,
                                  "name": "foundSellToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2862,
                                  "src": "13676:14:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "74727565",
                                  "id": 2895,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13693:4:1",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                },
                                "src": "13676:21:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 2897,
                              "nodeType": "ExpressionStatement",
                              "src": "13676:21:1"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2874,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2871,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2868,
                      "src": "13483:5:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2872,
                        "name": "filter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2846,
                        "src": "13491:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                          "typeString": "uint16[] memory"
                        }
                      },
                      "id": 2873,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "13491:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "13483:21:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2901,
                  "initializationExpression": {
                    "assignments": [
                      2868
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2868,
                        "name": "index",
                        "nodeType": "VariableDeclaration",
                        "scope": 2901,
                        "src": "13464:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2867,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13464:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 2870,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2869,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "13480:1:1",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "13464:17:1"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2876,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "13506:7:1",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 2875,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2868,
                        "src": "13506:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2877,
                    "nodeType": "ExpressionStatement",
                    "src": "13506:7:1"
                  },
                  "nodeType": "ForStatement",
                  "src": "13459:263:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 2904,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2902,
                      "name": "foundBuyToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2860,
                      "src": "13738:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2903,
                      "name": "foundSellToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2862,
                      "src": "13755:14:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "13738:31:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 2850,
                  "id": 2905,
                  "nodeType": "Return",
                  "src": "13731:38:1"
                }
              ]
            },
            "documentation": null,
            "id": 2907,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "matchesTokenFilter",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2847,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2841,
                  "name": "buyToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 2907,
                  "src": "13147:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 2840,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "13147:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2843,
                  "name": "sellToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 2907,
                  "src": "13172:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 2842,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "13172:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2846,
                  "name": "filter",
                  "nodeType": "VariableDeclaration",
                  "scope": 2907,
                  "src": "13198:22:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                    "typeString": "uint16[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2844,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "13198:6:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 2845,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "13198:8:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$dyn_storage_ptr",
                      "typeString": "uint16[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13137:89:1"
            },
            "returnParameters": {
              "id": 2850,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2849,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2907,
                  "src": "13248:4:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2848,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "13248:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13247:6:1"
            },
            "scope": 3517,
            "src": "13110:666:1",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2927,
              "nodeType": "Block",
              "src": "13851:104:1",
              "statements": [
                {
                  "assignments": [
                    2915
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2915,
                      "name": "slice",
                      "nodeType": "VariableDeclaration",
                      "scope": 2927,
                      "src": "13861:18:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 2914,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "13861:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2921,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2918,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "13896:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "id": 2919,
                        "name": "ADDRESS_WIDTH",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2249,
                        "src": "13899:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2916,
                        "name": "element",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2909,
                        "src": "13882:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 2917,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "slice",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9877,
                      "src": "13882:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                      }
                    },
                    "id": 2920,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13882:31:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13861:52:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2924,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "13946:1:1",
                        "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"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2922,
                        "name": "slice",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2915,
                        "src": "13930:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 2923,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "toAddress",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9912,
                      "src": "13930:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256) pure returns (address)"
                      }
                    },
                    "id": 2925,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13930:18:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 2913,
                  "id": 2926,
                  "nodeType": "Return",
                  "src": "13923:25:1"
                }
              ]
            },
            "documentation": null,
            "id": 2928,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getUser",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2910,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2909,
                  "name": "element",
                  "nodeType": "VariableDeclaration",
                  "scope": 2928,
                  "src": "13799:20:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2908,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "13799:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13798:22:1"
            },
            "returnParameters": {
              "id": 2913,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2912,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2928,
                  "src": "13842:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2911,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13842:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13841:9:1"
            },
            "scope": 3517,
            "src": "13782:173:1",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2948,
              "nodeType": "Block",
              "src": "14042:105:1",
              "statements": [
                {
                  "assignments": [
                    2936
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2936,
                      "name": "slice",
                      "nodeType": "VariableDeclaration",
                      "scope": 2948,
                      "src": "14052:18:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 2935,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "14052:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2942,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2939,
                        "name": "ADDRESS_WIDTH",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2249,
                        "src": "14087:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "3532",
                        "id": 2940,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14102:2:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_52_by_1",
                          "typeString": "int_const 52"
                        },
                        "value": "52"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_rational_52_by_1",
                          "typeString": "int_const 52"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2937,
                        "name": "element",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2930,
                        "src": "14073:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 2938,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "slice",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9877,
                      "src": "14073:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                      }
                    },
                    "id": 2941,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14073:32:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14052:53:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2945,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14138:1:1",
                        "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"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2943,
                        "name": "slice",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2936,
                        "src": "14122:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 2944,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "toUint256",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10157,
                      "src": "14122:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 2946,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14122:18:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2934,
                  "id": 2947,
                  "nodeType": "Return",
                  "src": "14115:25:1"
                }
              ]
            },
            "documentation": null,
            "id": 2949,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getSellTokenBalance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2931,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2930,
                  "name": "element",
                  "nodeType": "VariableDeclaration",
                  "scope": 2949,
                  "src": "13990:20:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2929,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "13990:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13989:22:1"
            },
            "returnParameters": {
              "id": 2934,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2933,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2949,
                  "src": "14033:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2932,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "14033:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14032:9:1"
            },
            "scope": 3517,
            "src": "13961:186:1",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2979,
              "nodeType": "Block",
              "src": "14258:184:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "3532",
                            "id": 2972,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14390:2:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_52_by_1",
                              "typeString": "int_const 52"
                            },
                            "value": "52"
                          },
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "id": 2975,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2973,
                              "name": "AUCTION_ELEMENT_WIDTH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2241,
                              "src": "14394:21:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "3532",
                              "id": 2974,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14418:2:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_52_by_1",
                                "typeString": "int_const 52"
                              },
                              "value": "52"
                            },
                            "src": "14394:26:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_52_by_1",
                              "typeString": "int_const 52"
                            },
                            {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2970,
                            "name": "element",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2951,
                            "src": "14376:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 2971,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "slice",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9877,
                          "src": "14376:13:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                          }
                        },
                        "id": 2976,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14376:45:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2966,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2953,
                                "src": "14343:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 2964,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10229,
                                "src": "14326:3:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 2965,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodePacked",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "14326:16:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 2967,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14326:24:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2960,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "14301:1:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "argumentTypes": null,
                                "id": 2961,
                                "name": "ADDRESS_WIDTH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2249,
                                "src": "14304:13:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 2958,
                                "name": "element",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2951,
                                "src": "14287:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 2959,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "slice",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9877,
                              "src": "14287:13:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                              }
                            },
                            "id": 2962,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14287:31:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 2963,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "concat",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9822,
                          "src": "14287:38:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory,bytes memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 2968,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14287:64:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 2969,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "concat",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9822,
                      "src": "14287:71:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,bytes memory) pure returns (bytes memory)"
                      }
                    },
                    "id": 2977,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14287:148:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 2957,
                  "id": 2978,
                  "nodeType": "Return",
                  "src": "14268:167:1"
                }
              ]
            },
            "documentation": null,
            "id": 2980,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "updateSellTokenBalance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2954,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2951,
                  "name": "element",
                  "nodeType": "VariableDeclaration",
                  "scope": 2980,
                  "src": "14185:20:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2950,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "14185:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2953,
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 2980,
                  "src": "14207:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2952,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "14207:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14184:38:1"
            },
            "returnParameters": {
              "id": 2957,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2956,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2980,
                  "src": "14244:12:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2955,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "14244:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14243:14:1"
            },
            "scope": 3517,
            "src": "14153:289:1",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3000,
              "nodeType": "Block",
              "src": "14520:92:1",
              "statements": [
                {
                  "assignments": [
                    2988
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2988,
                      "name": "slice",
                      "nodeType": "VariableDeclaration",
                      "scope": 3000,
                      "src": "14530:18:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 2987,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "14530:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2994,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "3532",
                        "id": 2991,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14565:2:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_52_by_1",
                          "typeString": "int_const 52"
                        },
                        "value": "52"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 2992,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14569:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_52_by_1",
                          "typeString": "int_const 52"
                        },
                        {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2989,
                        "name": "element",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2982,
                        "src": "14551:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 2990,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "slice",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9877,
                      "src": "14551:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                      }
                    },
                    "id": 2993,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14551:20:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14530:41:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2997,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14603:1:1",
                        "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"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2995,
                        "name": "slice",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2988,
                        "src": "14588:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 2996,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "toUint16",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9982,
                      "src": "14588:14:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint16_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256) pure returns (uint16)"
                      }
                    },
                    "id": 2998,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14588:17:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "functionReturnParameters": 2986,
                  "id": 2999,
                  "nodeType": "Return",
                  "src": "14581:24:1"
                }
              ]
            },
            "documentation": null,
            "id": 3001,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getBuyToken",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2983,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2982,
                  "name": "element",
                  "nodeType": "VariableDeclaration",
                  "scope": 3001,
                  "src": "14469:20:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2981,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "14469:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14468:22:1"
            },
            "returnParameters": {
              "id": 2986,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2985,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3001,
                  "src": "14512:6:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 2984,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "14512:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14511:8:1"
            },
            "scope": 3517,
            "src": "14448:164:1",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3021,
              "nodeType": "Block",
              "src": "14691:92:1",
              "statements": [
                {
                  "assignments": [
                    3009
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3009,
                      "name": "slice",
                      "nodeType": "VariableDeclaration",
                      "scope": 3021,
                      "src": "14701:18:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 3008,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "14701:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3015,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "3534",
                        "id": 3012,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14736:2:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_54_by_1",
                          "typeString": "int_const 54"
                        },
                        "value": "54"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 3013,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14740:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_54_by_1",
                          "typeString": "int_const 54"
                        },
                        {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3010,
                        "name": "element",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3003,
                        "src": "14722:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 3011,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "slice",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9877,
                      "src": "14722:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                      }
                    },
                    "id": 3014,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14722:20:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14701:41:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 3018,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14774:1:1",
                        "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"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3016,
                        "name": "slice",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3009,
                        "src": "14759:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 3017,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "toUint16",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9982,
                      "src": "14759:14:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint16_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256) pure returns (uint16)"
                      }
                    },
                    "id": 3019,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14759:17:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "functionReturnParameters": 3007,
                  "id": 3020,
                  "nodeType": "Return",
                  "src": "14752:24:1"
                }
              ]
            },
            "documentation": null,
            "id": 3022,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getSellToken",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3004,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3003,
                  "name": "element",
                  "nodeType": "VariableDeclaration",
                  "scope": 3022,
                  "src": "14640:20:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3002,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "14640:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14639:22:1"
            },
            "returnParameters": {
              "id": 3007,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3006,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3022,
                  "src": "14683:6:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 3005,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "14683:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14682:8:1"
            },
            "scope": 3517,
            "src": "14618:165:1",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3042,
              "nodeType": "Block",
              "src": "14862:92:1",
              "statements": [
                {
                  "assignments": [
                    3030
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3030,
                      "name": "slice",
                      "nodeType": "VariableDeclaration",
                      "scope": 3042,
                      "src": "14872:18:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 3029,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "14872:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3036,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "3536",
                        "id": 3033,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14907:2:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_56_by_1",
                          "typeString": "int_const 56"
                        },
                        "value": "56"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "34",
                        "id": 3034,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14911:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        },
                        "value": "4"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_56_by_1",
                          "typeString": "int_const 56"
                        },
                        {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3031,
                        "name": "element",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3024,
                        "src": "14893:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 3032,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "slice",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9877,
                      "src": "14893:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                      }
                    },
                    "id": 3035,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14893:20:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14872:41:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 3039,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14945:1:1",
                        "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"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3037,
                        "name": "slice",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3030,
                        "src": "14930:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 3038,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "toUint32",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10017,
                      "src": "14930:14:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint32_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256) pure returns (uint32)"
                      }
                    },
                    "id": 3040,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14930:17:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "functionReturnParameters": 3028,
                  "id": 3041,
                  "nodeType": "Return",
                  "src": "14923:24:1"
                }
              ]
            },
            "documentation": null,
            "id": 3043,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getValidFrom",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3025,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3024,
                  "name": "element",
                  "nodeType": "VariableDeclaration",
                  "scope": 3043,
                  "src": "14811:20:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3023,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "14811:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14810:22:1"
            },
            "returnParameters": {
              "id": 3028,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3027,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3043,
                  "src": "14854:6:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 3026,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "14854:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14853:8:1"
            },
            "scope": 3517,
            "src": "14789:165:1",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3063,
              "nodeType": "Block",
              "src": "15034:92:1",
              "statements": [
                {
                  "assignments": [
                    3051
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3051,
                      "name": "slice",
                      "nodeType": "VariableDeclaration",
                      "scope": 3063,
                      "src": "15044:18:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 3050,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "15044:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3057,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "3630",
                        "id": 3054,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15079:2:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_60_by_1",
                          "typeString": "int_const 60"
                        },
                        "value": "60"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "34",
                        "id": 3055,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15083:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        },
                        "value": "4"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_60_by_1",
                          "typeString": "int_const 60"
                        },
                        {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3052,
                        "name": "element",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3045,
                        "src": "15065:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 3053,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "slice",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9877,
                      "src": "15065:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                      }
                    },
                    "id": 3056,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15065:20:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15044:41:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 3060,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15117:1:1",
                        "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"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3058,
                        "name": "slice",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3051,
                        "src": "15102:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 3059,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "toUint32",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10017,
                      "src": "15102:14:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint32_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256) pure returns (uint32)"
                      }
                    },
                    "id": 3061,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15102:17:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "functionReturnParameters": 3049,
                  "id": 3062,
                  "nodeType": "Return",
                  "src": "15095:24:1"
                }
              ]
            },
            "documentation": null,
            "id": 3064,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getValidUntil",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3046,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3045,
                  "name": "element",
                  "nodeType": "VariableDeclaration",
                  "scope": 3064,
                  "src": "14983:20:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3044,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "14983:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14982:22:1"
            },
            "returnParameters": {
              "id": 3049,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3048,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3064,
                  "src": "15026:6:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 3047,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "15026:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15025:8:1"
            },
            "scope": 3517,
            "src": "14960:166:1",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3110,
              "nodeType": "Block",
              "src": "15230:252:1",
              "statements": [
                {
                  "assignments": [
                    3076
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3076,
                      "name": "result",
                      "nodeType": "VariableDeclaration",
                      "scope": 3110,
                      "src": "15240:22:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                        "typeString": "uint16[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3074,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "15240:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "id": 3075,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "15240:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint16_$dyn_storage_ptr",
                          "typeString": "uint16[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3083,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3080,
                          "name": "tokenIds",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3067,
                          "src": "15278:8:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 3081,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "15278:15:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3079,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "15265:12:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint16_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (uint16[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3077,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "15269:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "id": 3078,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "15269:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint16_$dyn_storage_ptr",
                          "typeString": "uint16[]"
                        }
                      }
                    },
                    "id": 3082,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15265:29:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$dyn_memory",
                      "typeString": "uint16[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15240:54:1"
                },
                {
                  "body": {
                    "id": 3106,
                    "nodeType": "Block",
                    "src": "15362:91:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3104,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3095,
                              "name": "result",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3076,
                              "src": "15376:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                                "typeString": "uint16[] memory"
                              }
                            },
                            "id": 3097,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3096,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3085,
                              "src": "15383:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "15376:13:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 3100,
                                  "name": "tokenIds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3067,
                                  "src": "15426:8:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 3102,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 3101,
                                  "name": "index",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3085,
                                  "src": "15435:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "15426:15:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 3098,
                                "name": "batchExchange",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2257,
                                "src": "15392:13:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_BatchExchange_$2226",
                                  "typeString": "contract BatchExchange"
                                }
                              },
                              "id": 3099,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "tokenAddressToIdMap",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 893,
                              "src": "15392:33:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint16_$",
                                "typeString": "function (address) view external returns (uint16)"
                              }
                            },
                            "id": 3103,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15392:50:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "src": "15376:66:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "id": 3105,
                        "nodeType": "ExpressionStatement",
                        "src": "15376:66:1"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3091,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3088,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3085,
                      "src": "15328:5:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3089,
                        "name": "tokenIds",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3067,
                        "src": "15336:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 3090,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "15336:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "15328:23:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3107,
                  "initializationExpression": {
                    "assignments": [
                      3085
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3085,
                        "name": "index",
                        "nodeType": "VariableDeclaration",
                        "scope": 3107,
                        "src": "15309:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3084,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15309:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 3087,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3086,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "15325:1:1",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "15309:17:1"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3093,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "15353:7:1",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 3092,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3085,
                        "src": "15353:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3094,
                    "nodeType": "ExpressionStatement",
                    "src": "15353:7:1"
                  },
                  "nodeType": "ForStatement",
                  "src": "15304:149:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3108,
                    "name": "result",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3076,
                    "src": "15469:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                      "typeString": "uint16[] memory"
                    }
                  },
                  "functionReturnParameters": 3072,
                  "id": 3109,
                  "nodeType": "Return",
                  "src": "15462:13:1"
                }
              ]
            },
            "documentation": null,
            "id": 3111,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getTokenIdsFromAdresses",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3068,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3067,
                  "name": "tokenIds",
                  "nodeType": "VariableDeclaration",
                  "scope": 3111,
                  "src": "15165:25:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3065,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "15165:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 3066,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "15165:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15164:27:1"
            },
            "returnParameters": {
              "id": 3072,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3071,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3111,
                  "src": "15213:15:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                    "typeString": "uint16[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3069,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "15213:6:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 3070,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "15213:8:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$dyn_storage_ptr",
                      "typeString": "uint16[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15212:17:1"
            },
            "scope": 3517,
            "src": "15132:350:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3210,
              "nodeType": "Block",
              "src": "15612:1134:1",
              "statements": [
                {
                  "assignments": [
                    3121
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3121,
                      "name": "user",
                      "nodeType": "VariableDeclaration",
                      "scope": 3210,
                      "src": "15622:12:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3120,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "15622:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3125,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3123,
                        "name": "element",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3113,
                        "src": "15645:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 3122,
                      "name": "getUser",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2928,
                      "src": "15637:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$",
                        "typeString": "function (bytes memory) pure returns (address)"
                      }
                    },
                    "id": 3124,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15637:16:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15622:31:1"
                },
                {
                  "assignments": [
                    3127
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3127,
                      "name": "sellToken",
                      "nodeType": "VariableDeclaration",
                      "scope": 3210,
                      "src": "15663:16:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 3126,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "15663:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3131,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3129,
                        "name": "element",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3113,
                        "src": "15695:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 3128,
                      "name": "getSellToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3022,
                      "src": "15682:12:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint16_$",
                        "typeString": "function (bytes memory) pure returns (uint16)"
                      }
                    },
                    "id": 3130,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15682:21:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15663:40:1"
                },
                {
                  "assignments": [
                    3133
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3133,
                      "name": "sellTokenAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 3210,
                      "src": "15713:24:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3132,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "15713:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3138,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3136,
                        "name": "sellToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3127,
                        "src": "15774:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3134,
                        "name": "batchExchange",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2257,
                        "src": "15740:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_BatchExchange_$2226",
                          "typeString": "contract BatchExchange"
                        }
                      },
                      "id": 3135,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "tokenIdToAddressMap",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 907,
                      "src": "15740:33:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_uint16_$returns$_t_address_$",
                        "typeString": "function (uint16) view external returns (address)"
                      }
                    },
                    "id": 3137,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15740:44:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15713:71:1"
                },
                {
                  "assignments": [
                    3140
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3140,
                      "name": "sellTokenBalance",
                      "nodeType": "VariableDeclaration",
                      "scope": 3210,
                      "src": "15794:24:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3139,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "15794:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3144,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3142,
                        "name": "element",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3113,
                        "src": "15841:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 3141,
                      "name": "getSellTokenBalance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2949,
                      "src": "15821:19:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                        "typeString": "function (bytes memory) pure returns (uint256)"
                      }
                    },
                    "id": 3143,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15821:28:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15794:55:1"
                },
                {
                  "assignments": [
                    3146,
                    3148
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3146,
                      "name": "depositAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 3210,
                      "src": "15860:21:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3145,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "15860:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3148,
                      "name": "depositBatch",
                      "nodeType": "VariableDeclaration",
                      "scope": 3210,
                      "src": "15883:19:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 3147,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "15883:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3154,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3151,
                        "name": "user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3121,
                        "src": "15938:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3152,
                        "name": "sellTokenAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3133,
                        "src": "15944:16:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3149,
                        "name": "batchExchange",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2257,
                        "src": "15906:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_BatchExchange_$2226",
                          "typeString": "contract BatchExchange"
                        }
                      },
                      "id": 3150,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getPendingDeposit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3849,
                      "src": "15906:31:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$_t_uint32_$",
                        "typeString": "function (address,address) view external returns (uint256,uint32)"
                      }
                    },
                    "id": 3153,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15906:55:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint32_$",
                      "typeString": "tuple(uint256,uint32)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15859:102:1"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 3163,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "id": 3159,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 3155,
                        "name": "depositBatch",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3148,
                        "src": "16076:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3156,
                            "name": "batchExchange",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2257,
                            "src": "16092:13:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_BatchExchange_$2226",
                              "typeString": "contract BatchExchange"
                            }
                          },
                          "id": 3157,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getCurrentBatchId",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3888,
                          "src": "16092:31:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_uint32_$",
                            "typeString": "function () view external returns (uint32)"
                          }
                        },
                        "id": 3158,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16092:33:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "src": "16076:49:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "id": 3162,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 3160,
                        "name": "depositBatch",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3148,
                        "src": "16129:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 3161,
                        "name": "targetBatchIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3115,
                        "src": "16144:16:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "src": "16129:31:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "16076:84:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3172,
                  "nodeType": "IfStatement",
                  "src": "16072:169:1",
                  "trueBody": {
                    "id": 3171,
                    "nodeType": "Block",
                    "src": "16162:79:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3169,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3164,
                            "name": "sellTokenBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3140,
                            "src": "16176:16:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3167,
                                "name": "depositAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3146,
                                "src": "16216:13:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 3165,
                                "name": "sellTokenBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3140,
                                "src": "16195:16:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3166,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 8563,
                              "src": "16195:20:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 3168,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16195:35:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16176:54:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3170,
                        "nodeType": "ExpressionStatement",
                        "src": "16176:54:1"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    3174,
                    3176
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3174,
                      "name": "withdrawAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 3210,
                      "src": "16251:22:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3173,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "16251:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3176,
                      "name": "withdrawBatch",
                      "nodeType": "VariableDeclaration",
                      "scope": 3210,
                      "src": "16275:20:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 3175,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "16275:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3182,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3179,
                        "name": "user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3121,
                        "src": "16332:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3180,
                        "name": "sellTokenAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3133,
                        "src": "16338:16:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3177,
                        "name": "batchExchange",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2257,
                        "src": "16299:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_BatchExchange_$2226",
                          "typeString": "contract BatchExchange"
                        }
                      },
                      "id": 3178,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getPendingWithdraw",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3876,
                      "src": "16299:32:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$_t_uint32_$",
                        "typeString": "function (address,address) view external returns (uint256,uint32)"
                      }
                    },
                    "id": 3181,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16299:56:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint32_$",
                      "typeString": "tuple(uint256,uint32)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16250:105:1"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 3191,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "id": 3187,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 3183,
                        "name": "withdrawBatch",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3176,
                        "src": "16478:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3184,
                            "name": "batchExchange",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2257,
                            "src": "16495:13:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_BatchExchange_$2226",
                              "typeString": "contract BatchExchange"
                            }
                          },
                          "id": 3185,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getCurrentBatchId",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3888,
                          "src": "16495:31:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_uint32_$",
                            "typeString": "function () view external returns (uint32)"
                          }
                        },
                        "id": 3186,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16495:33:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "src": "16478:50:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "id": 3190,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 3188,
                        "name": "withdrawBatch",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3176,
                        "src": "16532:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 3189,
                        "name": "targetBatchIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3115,
                        "src": "16548:16:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "src": "16532:32:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "16478:86:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3204,
                  "nodeType": "IfStatement",
                  "src": "16474:200:1",
                  "trueBody": {
                    "id": 3203,
                    "nodeType": "Block",
                    "src": "16566:108:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3201,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3192,
                            "name": "sellTokenBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3140,
                            "src": "16580:16:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3197,
                                    "name": "sellTokenBalance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3140,
                                    "src": "16629:16:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 3198,
                                    "name": "withdrawAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3174,
                                    "src": "16647:14:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3195,
                                    "name": "Math",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8536,
                                    "src": "16620:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_Math_$8536_$",
                                      "typeString": "type(library Math)"
                                    }
                                  },
                                  "id": 3196,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "min",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 8503,
                                  "src": "16620:8:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 3199,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16620:42:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 3193,
                                "name": "sellTokenBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3140,
                                "src": "16599:16:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3194,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 8579,
                              "src": "16599:20:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 3200,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16599:64:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16580:83:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3202,
                        "nodeType": "ExpressionStatement",
                        "src": "16580:83:1"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3206,
                        "name": "element",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3113,
                        "src": "16713:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3207,
                        "name": "sellTokenBalance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3140,
                        "src": "16722:16:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3205,
                      "name": "updateSellTokenBalance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2980,
                      "src": "16690:22:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256) pure returns (bytes memory)"
                      }
                    },
                    "id": 3208,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16690:49:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 3119,
                  "id": 3209,
                  "nodeType": "Return",
                  "src": "16683:56:1"
                }
              ]
            },
            "documentation": null,
            "id": 3211,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "updateSellTokenBalanceForBatchId",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3116,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3113,
                  "name": "element",
                  "nodeType": "VariableDeclaration",
                  "scope": 3211,
                  "src": "15530:20:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3112,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "15530:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3115,
                  "name": "targetBatchIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 3211,
                  "src": "15552:23:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 3114,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "15552:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15529:47:1"
            },
            "returnParameters": {
              "id": 3119,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3118,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3211,
                  "src": "15598:12:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3117,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "15598:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15597:14:1"
            },
            "scope": 3517,
            "src": "15488:1258:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3287,
              "nodeType": "Block",
              "src": "17363:725:1",
              "statements": [
                {
                  "assignments": [
                    3223
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3223,
                      "name": "tokenAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 3287,
                      "src": "17373:20:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3222,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "17373:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3228,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3226,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3213,
                        "src": "17430:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3224,
                        "name": "batchExchange",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2257,
                        "src": "17396:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_BatchExchange_$2226",
                          "typeString": "contract BatchExchange"
                        }
                      },
                      "id": 3225,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "tokenIdToAddressMap",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 907,
                      "src": "17396:33:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_uint16_$returns$_t_address_$",
                        "typeString": "function (uint16) view external returns (address)"
                      }
                    },
                    "id": 3227,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17396:42:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17373:65:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3231,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3229,
                      "name": "symbol",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3218,
                      "src": "17448:6:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "",
                      "id": 3230,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "string",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "17457:2:1",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                        "typeString": "literal_string \"\""
                      },
                      "value": ""
                    },
                    "src": "17448:11:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "id": 3232,
                  "nodeType": "ExpressionStatement",
                  "src": "17448:11:1"
                },
                {
                  "assignments": [
                    3234,
                    null
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3234,
                      "name": "hasStringSymbol",
                      "nodeType": "VariableDeclaration",
                      "scope": 3287,
                      "src": "17470:20:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 3233,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "17470:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    null
                  ],
                  "id": 3245,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "676574546f6b656e53796d626f6c537472696e67286164647265737329",
                            "id": 3241,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17558:31:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_b900dc02b8f4b27a7d992d05cae8b8c748f61310811f567fa784d843539df3ea",
                              "typeString": "literal_string \"getTokenSymbolString(address)\""
                            },
                            "value": "getTokenSymbolString(address)"
                          },
                          {
                            "argumentTypes": null,
                            "id": 3242,
                            "name": "tokenAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3223,
                            "src": "17591:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_b900dc02b8f4b27a7d992d05cae8b8c748f61310811f567fa784d843539df3ea",
                              "typeString": "literal_string \"getTokenSymbolString(address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3239,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10229,
                            "src": "17534:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 3240,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "17534:23:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 3243,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17534:70:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3236,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10298,
                            "src": "17504:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_BatchExchangeViewer_$3517",
                              "typeString": "contract BatchExchangeViewer"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_BatchExchangeViewer_$3517",
                              "typeString": "contract BatchExchangeViewer"
                            }
                          ],
                          "id": 3235,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "17496:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 3237,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17496:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 3238,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "staticcall",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17496:24:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                      }
                    },
                    "id": 3244,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17496:118:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bool,bytes memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17469:145:1"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 3246,
                    "name": "hasStringSymbol",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3234,
                    "src": "17628:15:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 3276,
                    "nodeType": "Block",
                    "src": "17719:284:1",
                    "statements": [
                      {
                        "assignments": [
                          3255,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3255,
                            "name": "hasBytesSymbol",
                            "nodeType": "VariableDeclaration",
                            "scope": 3276,
                            "src": "17734:19:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 3254,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "17734:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 3266,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "676574546f6b656e53796d626f6c4279746573286164647265737329",
                                  "id": 3262,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "17825:30:1",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_9101074c84c378e867d4e4d1ecd2b1aa7f48a8f6de005b31abc7b7f446558cae",
                                    "typeString": "literal_string \"getTokenSymbolBytes(address)\""
                                  },
                                  "value": "getTokenSymbolBytes(address)"
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3263,
                                  "name": "tokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3223,
                                  "src": "17857:12:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_9101074c84c378e867d4e4d1ecd2b1aa7f48a8f6de005b31abc7b7f446558cae",
                                    "typeString": "literal_string \"getTokenSymbolBytes(address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3260,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10229,
                                  "src": "17801:3:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 3261,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "17801:23:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 3264,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17801:69:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3257,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10298,
                                  "src": "17767:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_BatchExchangeViewer_$3517",
                                    "typeString": "contract BatchExchangeViewer"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_BatchExchangeViewer_$3517",
                                    "typeString": "contract BatchExchangeViewer"
                                  }
                                ],
                                "id": 3256,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "17759:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 3258,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17759:13:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 3259,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "17759:24:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 3265,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17759:125:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17733:151:1"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 3267,
                          "name": "hasBytesSymbol",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3255,
                          "src": "17902:14:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3275,
                        "nodeType": "IfStatement",
                        "src": "17898:95:1",
                        "trueBody": {
                          "id": 3274,
                          "nodeType": "Block",
                          "src": "17918:75:1",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3272,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 3268,
                                  "name": "symbol",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3218,
                                  "src": "17936:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 3270,
                                      "name": "tokenAddress",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3223,
                                      "src": "17965:12:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 3269,
                                    "name": "getTokenSymbolBytes",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3360,
                                    "src": "17945:19:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_string_memory_ptr_$",
                                      "typeString": "function (address) view returns (string memory)"
                                    }
                                  },
                                  "id": 3271,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "17945:33:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                "src": "17936:42:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              "id": 3273,
                              "nodeType": "ExpressionStatement",
                              "src": "17936:42:1"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 3277,
                  "nodeType": "IfStatement",
                  "src": "17624:379:1",
                  "trueBody": {
                    "id": 3253,
                    "nodeType": "Block",
                    "src": "17645:68:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3251,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3247,
                            "name": "symbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3218,
                            "src": "17659:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3249,
                                "name": "tokenAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3223,
                                "src": "17689:12:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 3248,
                              "name": "getTokenSymbolString",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3302,
                              "src": "17668:20:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_string_memory_ptr_$",
                                "typeString": "function (address) view returns (string memory)"
                              }
                            },
                            "id": 3250,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17668:34:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "17659:43:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "id": 3252,
                        "nodeType": "ExpressionStatement",
                        "src": "17659:43:1"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 3278,
                        "name": "tokenAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3223,
                        "src": "18020:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3279,
                        "name": "symbol",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3218,
                        "src": "18034:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3281,
                                "name": "tokenAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3223,
                                "src": "18056:12:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 3280,
                              "name": "ERC20Detailed",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9304,
                              "src": "18042:13:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ERC20Detailed_$9304_$",
                                "typeString": "type(contract ERC20Detailed)"
                              }
                            },
                            "id": 3282,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18042:27:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ERC20Detailed_$9304",
                              "typeString": "contract ERC20Detailed"
                            }
                          },
                          "id": 3283,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "decimals",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9303,
                          "src": "18042:36:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
                            "typeString": "function () view external returns (uint8)"
                          }
                        },
                        "id": 3284,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "18042:38:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      }
                    ],
                    "id": 3285,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "18019:62:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_address_$_t_string_memory_ptr_$_t_uint8_$",
                      "typeString": "tuple(address,string memory,uint8)"
                    }
                  },
                  "functionReturnParameters": 3221,
                  "id": 3286,
                  "nodeType": "Return",
                  "src": "18012:69:1"
                }
              ]
            },
            "documentation": "@dev Queries the token information for the given tokenId. Can handle symbols of type string and bytes (e.g. MKR).\nReturns \"Unknown\" as symbol value if it cannot be retrieved and reverts if decimals can not be fetched\n(to avoid ambiguity with a \"valid\" value).\n@param tokenId the ID of a token listed on BatchExchange\n@return the address, symbol and decimals of the token contract",
            "id": 3288,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getTokenInfo",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3214,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3213,
                  "name": "tokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3288,
                  "src": "17205:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 3212,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "17205:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "17204:16:1"
            },
            "returnParameters": {
              "id": 3221,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3216,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3288,
                  "src": "17279:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3215,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "17279:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3218,
                  "name": "symbol",
                  "nodeType": "VariableDeclaration",
                  "scope": 3288,
                  "src": "17300:20:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3217,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "17300:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3220,
                  "name": "decimals",
                  "nodeType": "VariableDeclaration",
                  "scope": 3288,
                  "src": "17334:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 3219,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "17334:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "17265:93:1"
            },
            "scope": 3517,
            "src": "17183:905:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3301,
              "nodeType": "Block",
              "src": "18471:53:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3296,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3290,
                            "src": "18502:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 3295,
                          "name": "ERC20Detailed",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9304,
                          "src": "18488:13:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ERC20Detailed_$9304_$",
                            "typeString": "type(contract ERC20Detailed)"
                          }
                        },
                        "id": 3297,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "18488:20:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC20Detailed_$9304",
                          "typeString": "contract ERC20Detailed"
                        }
                      },
                      "id": 3298,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "symbol",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9295,
                      "src": "18488:27:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_string_memory_ptr_$",
                        "typeString": "function () view external returns (string memory)"
                      }
                    },
                    "id": 3299,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18488:29:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 3294,
                  "id": 3300,
                  "nodeType": "Return",
                  "src": "18481:36:1"
                }
              ]
            },
            "documentation": "@dev returns the symbol() of the given address assuming it is returned as a string.\nReverts if method does not exist or returns data that is not a valid string.\n@param token the token address from which to receive the symbol\n@return the token's symbol",
            "id": 3302,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getTokenSymbolString",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3291,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3290,
                  "name": "token",
                  "nodeType": "VariableDeclaration",
                  "scope": 3302,
                  "src": "18420:13:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3289,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18420:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18419:15:1"
            },
            "returnParameters": {
              "id": 3294,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3293,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3302,
                  "src": "18456:13:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3292,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "18456:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18455:15:1"
            },
            "scope": 3517,
            "src": "18390:134:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3359,
              "nodeType": "Block",
              "src": "18973:441:1",
              "statements": [
                {
                  "assignments": [
                    3310,
                    3312
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3310,
                      "name": "success",
                      "nodeType": "VariableDeclaration",
                      "scope": 3359,
                      "src": "18984:12:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 3309,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "18984:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3312,
                      "name": "result",
                      "nodeType": "VariableDeclaration",
                      "scope": 3359,
                      "src": "18998:19:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 3311,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "18998:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3320,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "73796d626f6c2829",
                            "id": 3317,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19062:10:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_95d89b41e2f5f391a79ec54e9d87c79d6e777c63e32c28da95b4e9e4a79250ec",
                              "typeString": "literal_string \"symbol()\""
                            },
                            "value": "symbol()"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_95d89b41e2f5f391a79ec54e9d87c79d6e777c63e32c28da95b4e9e4a79250ec",
                              "typeString": "literal_string \"symbol()\""
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3315,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10229,
                            "src": "19038:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 3316,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "19038:23:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 3318,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19038:35:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3313,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3304,
                        "src": "19021:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 3314,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "staticcall",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19021:16:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                      }
                    },
                    "id": 3319,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19021:53:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bool,bytes memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18983:91:1"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 3322,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "19088:8:1",
                    "subExpression": {
                      "argumentTypes": null,
                      "id": 3321,
                      "name": "success",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3310,
                      "src": "19089:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3328,
                  "nodeType": "IfStatement",
                  "src": "19084:66:1",
                  "trueBody": {
                    "id": 3327,
                    "nodeType": "Block",
                    "src": "19098:52:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "43616e6e6f74206765742073796d626f6c",
                              "id": 3324,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "19119:19:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4b0ba4c998450aa6f43c5a2e6835d1879213d6d1cb07c4a8463b9f309be27399",
                                "typeString": "literal_string \"Cannot get symbol\""
                              },
                              "value": "Cannot get symbol"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_4b0ba4c998450aa6f43c5a2e6835d1879213d6d1cb07c4a8463b9f309be27399",
                                "typeString": "literal_string \"Cannot get symbol\""
                              }
                            ],
                            "id": 3323,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              10247,
                              10248
                            ],
                            "referencedDeclaration": 10248,
                            "src": "19112:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory) pure"
                            }
                          },
                          "id": 3325,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19112:27:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3326,
                        "nodeType": "ExpressionStatement",
                        "src": "19112:27:1"
                      }
                    ]
                  }
                },
                {
                  "body": {
                    "id": 3353,
                    "nodeType": "Block",
                    "src": "19249:128:1",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          },
                          "id": 3344,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3340,
                              "name": "result",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3312,
                              "src": "19267:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 3342,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3341,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3330,
                              "src": "19274:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "19267:13:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3343,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19284:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "19267:18:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3352,
                        "nodeType": "IfStatement",
                        "src": "19263:104:1",
                        "trueBody": {
                          "id": 3351,
                          "nodeType": "Block",
                          "src": "19287:80:1",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3346,
                                    "name": "result",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3312,
                                    "src": "19315:6:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 3347,
                                    "name": "index",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3330,
                                    "src": "19323:5:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 3345,
                                  "name": "setLength",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3369,
                                  "src": "19305:9:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$__$",
                                    "typeString": "function (bytes memory,uint256) pure"
                                  }
                                },
                                "id": 3348,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "19305:24:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3349,
                              "nodeType": "ExpressionStatement",
                              "src": "19305:24:1"
                            },
                            {
                              "id": 3350,
                              "nodeType": "Break",
                              "src": "19347:5:1"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3336,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3333,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3330,
                      "src": "19217:5:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3334,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3312,
                        "src": "19225:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 3335,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19225:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "19217:21:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3354,
                  "initializationExpression": {
                    "assignments": [
                      3330
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3330,
                        "name": "index",
                        "nodeType": "VariableDeclaration",
                        "scope": 3354,
                        "src": "19198:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3329,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19198:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 3332,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3331,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "19214:1:1",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "19198:17:1"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3338,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "19240:7:1",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 3337,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3330,
                        "src": "19240:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3339,
                    "nodeType": "ExpressionStatement",
                    "src": "19240:7:1"
                  },
                  "nodeType": "ForStatement",
                  "src": "19193:184:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3356,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3312,
                        "src": "19400:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 3355,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "19393:6:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                        "typeString": "type(string storage pointer)"
                      },
                      "typeName": "string"
                    },
                    "id": 3357,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19393:14:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 3308,
                  "id": 3358,
                  "nodeType": "Return",
                  "src": "19386:21:1"
                }
              ]
            },
            "documentation": "@dev returns the symbol() of the given address assuming it is returned as a bytes.\nReverts if method does not exist or returns data that cannot be casted into a string.\n@param token the token address from which to receive the symbol\n@return the token's symbol converted into a trimmed (trailing 0 bytes remove) string.",
            "id": 3360,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getTokenSymbolBytes",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3305,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3304,
                  "name": "token",
                  "nodeType": "VariableDeclaration",
                  "scope": 3360,
                  "src": "18922:13:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3303,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18922:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18921:15:1"
            },
            "returnParameters": {
              "id": 3308,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3307,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3360,
                  "src": "18958:13:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3306,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "18958:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18957:15:1"
            },
            "scope": 3517,
            "src": "18893:521:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3368,
              "nodeType": "Block",
              "src": "19756:71:1",
              "statements": [
                {
                  "externalReferences": [
                    {
                      "buffer": {
                        "declaration": 3362,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "19796:6:1",
                        "valueSize": 1
                      }
                    },
                    {
                      "length": {
                        "declaration": 3364,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "19804:6:1",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 3367,
                  "nodeType": "InlineAssembly",
                  "operations": "{ mstore(buffer, length) }",
                  "src": "19766:55:1"
                }
              ]
            },
            "documentation": "@dev Sets the length of the given buffer (truncating any items exceeding the length).\nNote, that this can lead to memory leakage or undefined behavior if length  is larger than the size\nthat was originally allocated by the buffer.",
            "id": 3369,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setLength",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3365,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3362,
                  "name": "buffer",
                  "nodeType": "VariableDeclaration",
                  "scope": 3369,
                  "src": "19707:19:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3361,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "19707:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3364,
                  "name": "length",
                  "nodeType": "VariableDeclaration",
                  "scope": 3369,
                  "src": "19728:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3363,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "19728:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "19706:37:1"
            },
            "returnParameters": {
              "id": 3366,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "19756:0:1"
            },
            "scope": 3517,
            "src": "19688:139:1",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3401,
              "nodeType": "Block",
              "src": "19959:120:1",
              "statements": [
                {
                  "body": {
                    "id": 3399,
                    "nodeType": "Block",
                    "src": "20013:60:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3397,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3389,
                              "name": "destination",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3373,
                              "src": "20027:11:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 3393,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3392,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3390,
                                "name": "offset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3375,
                                "src": "20039:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 3391,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3379,
                                "src": "20048:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "20039:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "20027:23:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3394,
                              "name": "source",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3371,
                              "src": "20053:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 3396,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3395,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3379,
                              "src": "20060:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "20053:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          },
                          "src": "20027:35:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        },
                        "id": 3398,
                        "nodeType": "ExpressionStatement",
                        "src": "20027:35:1"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3385,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3382,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3379,
                      "src": "19989:1:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3383,
                        "name": "source",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3371,
                        "src": "19993:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 3384,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19993:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "19989:17:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3400,
                  "initializationExpression": {
                    "assignments": [
                      3379
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3379,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3400,
                        "src": "19974:9:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3378,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19974:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 3381,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3380,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "19986:1:1",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "19974:13:1"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3387,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "20008:3:1",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 3386,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3379,
                        "src": "20008:1:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3388,
                    "nodeType": "ExpressionStatement",
                    "src": "20008:3:1"
                  },
                  "nodeType": "ForStatement",
                  "src": "19969:104:1"
                }
              ]
            },
            "documentation": null,
            "id": 3402,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "copyInPlace",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3376,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3371,
                  "name": "source",
                  "nodeType": "VariableDeclaration",
                  "scope": 3402,
                  "src": "19863:19:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3370,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "19863:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3373,
                  "name": "destination",
                  "nodeType": "VariableDeclaration",
                  "scope": 3402,
                  "src": "19892:24:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3372,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "19892:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3375,
                  "name": "offset",
                  "nodeType": "VariableDeclaration",
                  "scope": 3402,
                  "src": "19926:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3374,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "19926:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "19853:93:1"
            },
            "returnParameters": {
              "id": 3377,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "19959:0:1"
            },
            "scope": 3517,
            "src": "19833:246:1",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3515,
              "nodeType": "Block",
              "src": "20518:1469:1",
              "statements": [
                {
                  "assignments": [
                    3417,
                    3419,
                    3421,
                    3423,
                    3425,
                    3427,
                    3429
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3417,
                      "name": "buyToken",
                      "nodeType": "VariableDeclaration",
                      "scope": 3515,
                      "src": "20542:15:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 3416,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "20542:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3419,
                      "name": "sellToken",
                      "nodeType": "VariableDeclaration",
                      "scope": 3515,
                      "src": "20571:16:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 3418,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "20571:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3421,
                      "name": "validFrom",
                      "nodeType": "VariableDeclaration",
                      "scope": 3515,
                      "src": "20601:16:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 3420,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "20601:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3423,
                      "name": "validUntil",
                      "nodeType": "VariableDeclaration",
                      "scope": 3515,
                      "src": "20631:17:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 3422,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "20631:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3425,
                      "name": "priceNumerator",
                      "nodeType": "VariableDeclaration",
                      "scope": 3515,
                      "src": "20662:22:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      },
                      "typeName": {
                        "id": 3424,
                        "name": "uint128",
                        "nodeType": "ElementaryTypeName",
                        "src": "20662:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3427,
                      "name": "priceDenominator",
                      "nodeType": "VariableDeclaration",
                      "scope": 3515,
                      "src": "20698:24:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      },
                      "typeName": {
                        "id": 3426,
                        "name": "uint128",
                        "nodeType": "ElementaryTypeName",
                        "src": "20698:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3429,
                      "name": "usedAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 3515,
                      "src": "20736:18:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      },
                      "typeName": {
                        "id": 3428,
                        "name": "uint128",
                        "nodeType": "ElementaryTypeName",
                        "src": "20736:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3442,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3432,
                        "name": "order",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3409,
                        "src": "20778:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "id": 3433,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "20786:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint16_$",
                              "typeString": "type(uint16)"
                            },
                            "typeName": "uint16"
                          },
                          {
                            "argumentTypes": null,
                            "id": 3434,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "20794:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint16_$",
                              "typeString": "type(uint16)"
                            },
                            "typeName": "uint16"
                          },
                          {
                            "argumentTypes": null,
                            "id": 3435,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "20802:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint32_$",
                              "typeString": "type(uint32)"
                            },
                            "typeName": "uint32"
                          },
                          {
                            "argumentTypes": null,
                            "id": 3436,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "20810:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint32_$",
                              "typeString": "type(uint32)"
                            },
                            "typeName": "uint32"
                          },
                          {
                            "argumentTypes": null,
                            "id": 3437,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "20818:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint128_$",
                              "typeString": "type(uint128)"
                            },
                            "typeName": "uint128"
                          },
                          {
                            "argumentTypes": null,
                            "id": 3438,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "20827:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint128_$",
                              "typeString": "type(uint128)"
                            },
                            "typeName": "uint128"
                          },
                          {
                            "argumentTypes": null,
                            "id": 3439,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "20836:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint128_$",
                              "typeString": "type(uint128)"
                            },
                            "typeName": "uint128"
                          }
                        ],
                        "id": 3440,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "20785:59:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_type$_t_uint16_$_$_t_type$_t_uint16_$_$_t_type$_t_uint32_$_$_t_type$_t_uint32_$_$_t_type$_t_uint128_$_$_t_type$_t_uint128_$_$_t_type$_t_uint128_$_$",
                          "typeString": "tuple(type(uint16),type(uint16),type(uint32),type(uint32),type(uint128),type(uint128),type(uint128))"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_tuple$_t_type$_t_uint16_$_$_t_type$_t_uint16_$_$_t_type$_t_uint32_$_$_t_type$_t_uint32_$_$_t_type$_t_uint128_$_$_t_type$_t_uint128_$_$_t_type$_t_uint128_$_$",
                          "typeString": "tuple(type(uint16),type(uint16),type(uint32),type(uint32),type(uint128),type(uint128),type(uint128))"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3430,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10229,
                        "src": "20767:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 3431,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "20767:10:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 3441,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20767:78:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint16_$_t_uint16_$_t_uint32_$_t_uint32_$_t_uint128_$_t_uint128_$_t_uint128_$",
                      "typeString": "tuple(uint16,uint16,uint32,uint32,uint128,uint128,uint128)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "20528:317:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3446,
                            "name": "user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3407,
                            "src": "20958:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3444,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10229,
                            "src": "20941:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 3445,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "20941:16:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 3447,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "20941:22:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3448,
                        "name": "target",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3411,
                        "src": "20965:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3449,
                        "name": "offset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3413,
                        "src": "20973:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3443,
                      "name": "copyInPlace",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3402,
                      "src": "20929:11:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes memory,bytes memory,uint256) pure"
                      }
                    },
                    "id": 3450,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20929:51:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3451,
                  "nodeType": "ExpressionStatement",
                  "src": "20929:51:1"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3453,
                        "name": "buyToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3417,
                        "src": "21013:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3454,
                        "name": "sellToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3419,
                        "src": "21023:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3455,
                        "name": "tokenFilter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3405,
                        "src": "21034:11:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                          "typeString": "uint16[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                          "typeString": "uint16[] memory"
                        }
                      ],
                      "id": 3452,
                      "name": "matchesTokenFilter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2907,
                      "src": "20994:18:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint16_$_t_uint16_$_t_array$_t_uint16_$dyn_memory_ptr_$returns$_t_bool_$",
                        "typeString": "function (uint16,uint16,uint16[] memory) pure returns (bool)"
                      }
                    },
                    "id": 3456,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20994:52:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 3513,
                    "nodeType": "Block",
                    "src": "21679:302:1",
                    "statements": [
                      {
                        "body": {
                          "id": 3511,
                          "nodeType": "Block",
                          "src": "21916:55:1",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3509,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3503,
                                    "name": "target",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3411,
                                    "src": "21934:6:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 3507,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3506,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 3504,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3494,
                                      "src": "21941:1:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 3505,
                                      "name": "offset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3413,
                                      "src": "21945:6:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "21941:10:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "21934:18:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 3508,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "21955:1:1",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "21934:22:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "id": 3510,
                              "nodeType": "ExpressionStatement",
                              "src": "21934:22:1"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3499,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3497,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3494,
                            "src": "21884:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3498,
                            "name": "AUCTION_ELEMENT_WIDTH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2241,
                            "src": "21888:21:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "21884:25:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3512,
                        "initializationExpression": {
                          "assignments": [
                            3494
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 3494,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 3512,
                              "src": "21857:9:1",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 3493,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "21857:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 3496,
                          "initialValue": {
                            "argumentTypes": null,
                            "id": 3495,
                            "name": "ADDRESS_WIDTH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2249,
                            "src": "21869:13:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "21857:25:1"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 3501,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "21911:3:1",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 3500,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3494,
                              "src": "21911:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3502,
                          "nodeType": "ExpressionStatement",
                          "src": "21911:3:1"
                        },
                        "nodeType": "ForStatement",
                        "src": "21852:119:1"
                      }
                    ]
                  },
                  "id": 3514,
                  "nodeType": "IfStatement",
                  "src": "20990:991:1",
                  "trueBody": {
                    "id": 3492,
                    "nodeType": "Block",
                    "src": "21048:625:1",
                    "statements": [
                      {
                        "assignments": [
                          3458
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3458,
                            "name": "remainingAmount",
                            "nodeType": "VariableDeclaration",
                            "scope": 3492,
                            "src": "21062:23:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            },
                            "typeName": {
                              "id": 3457,
                              "name": "uint128",
                              "nodeType": "ElementaryTypeName",
                              "src": "21062:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3462,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          },
                          "id": 3461,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3459,
                            "name": "priceDenominator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3427,
                            "src": "21088:16:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3460,
                            "name": "usedAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3429,
                            "src": "21107:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "21088:29:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "21062:55:1"
                      },
                      {
                        "assignments": [
                          3464
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3464,
                            "name": "sellTokenBalance",
                            "nodeType": "VariableDeclaration",
                            "scope": 3492,
                            "src": "21131:24:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3463,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "21131:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3473,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3467,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3407,
                              "src": "21183:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3470,
                                  "name": "sellToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3419,
                                  "src": "21223:9:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3468,
                                  "name": "batchExchange",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2257,
                                  "src": "21189:13:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_BatchExchange_$2226",
                                    "typeString": "contract BatchExchange"
                                  }
                                },
                                "id": 3469,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "tokenIdToAddressMap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 907,
                                "src": "21189:33:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_uint16_$returns$_t_address_$",
                                  "typeString": "function (uint16) view external returns (address)"
                                }
                              },
                              "id": 3471,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "21189:44:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3465,
                              "name": "batchExchange",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2257,
                              "src": "21158:13:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_BatchExchange_$2226",
                                "typeString": "contract BatchExchange"
                              }
                            },
                            "id": 3466,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getBalance",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3976,
                            "src": "21158:24:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address,address) view external returns (uint256)"
                            }
                          },
                          "id": 3472,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21158:76:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "21131:103:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3477,
                                  "name": "sellTokenBalance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3464,
                                  "src": "21315:16:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3478,
                                  "name": "buyToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3417,
                                  "src": "21353:8:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3479,
                                  "name": "sellToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3419,
                                  "src": "21383:9:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3480,
                                  "name": "validFrom",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3421,
                                  "src": "21414:9:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3481,
                                  "name": "validUntil",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3423,
                                  "src": "21445:10:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3482,
                                  "name": "priceNumerator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3425,
                                  "src": "21477:14:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3483,
                                  "name": "priceDenominator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3427,
                                  "src": "21513:16:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3484,
                                  "name": "remainingAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3458,
                                  "src": "21551:15:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  },
                                  {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  },
                                  {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  },
                                  {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  },
                                  {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  },
                                  {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  },
                                  {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3475,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10229,
                                  "src": "21277:3:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 3476,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "21277:16:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 3485,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "21277:307:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3486,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3411,
                              "src": "21602:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3489,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3487,
                                "name": "offset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3413,
                                "src": "21626:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 3488,
                                "name": "ADDRESS_WIDTH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2249,
                                "src": "21635:13:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "src": "21626:22:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3474,
                            "name": "copyInPlace",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3402,
                            "src": "21248:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$",
                              "typeString": "function (bytes memory,bytes memory,uint256) pure"
                            }
                          },
                          "id": 3490,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21248:414:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3491,
                        "nodeType": "ExpressionStatement",
                        "src": "21248:414:1"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@dev Encodes the auction elements in the same format as BatchExchange.encodeAuctionElement with\nthe only difference that order with tokens that match the token filter will be 0 serialized\n(as if they were deleted)",
            "id": 3516,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "encodeAuctionElement",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3414,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3405,
                  "name": "tokenFilter",
                  "nodeType": "VariableDeclaration",
                  "scope": 3516,
                  "src": "20368:27:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                    "typeString": "uint16[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3403,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "20368:6:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 3404,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "20368:8:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$dyn_storage_ptr",
                      "typeString": "uint16[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3407,
                  "name": "user",
                  "nodeType": "VariableDeclaration",
                  "scope": 3516,
                  "src": "20405:12:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3406,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "20405:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3409,
                  "name": "order",
                  "nodeType": "VariableDeclaration",
                  "scope": 3516,
                  "src": "20427:18:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3408,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "20427:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3411,
                  "name": "target",
                  "nodeType": "VariableDeclaration",
                  "scope": 3516,
                  "src": "20455:19:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3410,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "20455:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3413,
                  "name": "offset",
                  "nodeType": "VariableDeclaration",
                  "scope": 3516,
                  "src": "20484:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3412,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "20484:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "20358:146:1"
            },
            "returnParameters": {
              "id": 3415,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "20518:0:1"
            },
            "scope": 3517,
            "src": "20329:1658:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "private"
          }
        ],
        "scope": 3518,
        "src": "227:21762:1"
      }
    ],
    "src": "0:21990:1"
  },
  "legacyAST": {
    "absolutePath": "/Users/felixleupold/Gnosis/dex-contracts/contracts/BatchExchangeViewer.sol",
    "exportedSymbols": {
      "BatchExchangeViewer": [
        3517
      ]
    },
    "id": 3518,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2228,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".10"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:1"
      },
      {
        "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
        "file": "@openzeppelin/contracts/math/SafeMath.sol",
        "id": 2229,
        "nodeType": "ImportDirective",
        "scope": 3518,
        "sourceUnit": 8724,
        "src": "26:51:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20Detailed.sol",
        "file": "@openzeppelin/contracts/token/ERC20/ERC20Detailed.sol",
        "id": 2230,
        "nodeType": "ImportDirective",
        "scope": 3518,
        "sourceUnit": 9305,
        "src": "78:63:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "solidity-bytes-utils/contracts/BytesLib.sol",
        "file": "solidity-bytes-utils/contracts/BytesLib.sol",
        "id": 2231,
        "nodeType": "ImportDirective",
        "scope": 3518,
        "sourceUnit": 10228,
        "src": "142:53:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/felixleupold/Gnosis/dex-contracts/contracts/BatchExchange.sol",
        "file": "./BatchExchange.sol",
        "id": 2232,
        "nodeType": "ImportDirective",
        "scope": 3518,
        "sourceUnit": 2227,
        "src": "196:29:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 3517,
        "linearizedBaseContracts": [
          3517
        ],
        "name": "BatchExchangeViewer",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 2235,
            "libraryName": {
              "contractScope": null,
              "id": 2233,
              "name": "BytesLib",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10227,
              "src": "268:8:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BytesLib_$10227",
                "typeString": "library BytesLib"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "262:25:1",
            "typeName": {
              "id": 2234,
              "name": "bytes",
              "nodeType": "ElementaryTypeName",
              "src": "281:5:1",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes_storage_ptr",
                "typeString": "bytes"
              }
            }
          },
          {
            "id": 2238,
            "libraryName": {
              "contractScope": null,
              "id": 2236,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8723,
              "src": "298:8:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$8723",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "292:27:1",
            "typeName": {
              "id": 2237,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "311:7:1",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": true,
            "id": 2241,
            "name": "AUCTION_ELEMENT_WIDTH",
            "nodeType": "VariableDeclaration",
            "scope": 3517,
            "src": "325:49:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint8",
              "typeString": "uint8"
            },
            "typeName": {
              "id": 2239,
              "name": "uint8",
              "nodeType": "ElementaryTypeName",
              "src": "325:5:1",
              "typeDescriptions": {
                "typeIdentifier": "t_uint8",
                "typeString": "uint8"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "313132",
              "id": 2240,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "371:3:1",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_112_by_1",
                "typeString": "int_const 112"
              },
              "value": "112"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 2246,
            "name": "INDEXED_AUCTION_ELEMENT_WIDTH",
            "nodeType": "VariableDeclaration",
            "scope": 3517,
            "src": "450:79:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint8",
              "typeString": "uint8"
            },
            "typeName": {
              "id": 2242,
              "name": "uint8",
              "nodeType": "ElementaryTypeName",
              "src": "450:5:1",
              "typeDescriptions": {
                "typeIdentifier": "t_uint8",
                "typeString": "uint8"
              }
            },
            "value": {
              "argumentTypes": null,
              "commonType": {
                "typeIdentifier": "t_uint8",
                "typeString": "uint8"
              },
              "id": 2245,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "lValueRequested": false,
              "leftExpression": {
                "argumentTypes": null,
                "id": 2243,
                "name": "AUCTION_ELEMENT_WIDTH",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 2241,
                "src": "504:21:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                }
              },
              "nodeType": "BinaryOperation",
              "operator": "+",
              "rightExpression": {
                "argumentTypes": null,
                "hexValue": "32",
                "id": 2244,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "528:1:1",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_2_by_1",
                  "typeString": "int_const 2"
                },
                "value": "2"
              },
              "src": "504:25:1",
              "typeDescriptions": {
                "typeIdentifier": "t_uint8",
                "typeString": "uint8"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 2249,
            "name": "ADDRESS_WIDTH",
            "nodeType": "VariableDeclaration",
            "scope": 3517,
            "src": "535:40:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint8",
              "typeString": "uint8"
            },
            "typeName": {
              "id": 2247,
              "name": "uint8",
              "nodeType": "ElementaryTypeName",
              "src": "535:5:1",
              "typeDescriptions": {
                "typeIdentifier": "t_uint8",
                "typeString": "uint8"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "3230",
              "id": 2248,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "573:2:1",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_20_by_1",
                "typeString": "int_const 20"
              },
              "value": "20"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 2252,
            "name": "LARGE_PAGE_SIZE",
            "nodeType": "VariableDeclaration",
            "scope": 3517,
            "src": "581:45:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint16",
              "typeString": "uint16"
            },
            "typeName": {
              "id": 2250,
              "name": "uint16",
              "nodeType": "ElementaryTypeName",
              "src": "581:6:1",
              "typeDescriptions": {
                "typeIdentifier": "t_uint16",
                "typeString": "uint16"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "35303030",
              "id": 2251,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "622:4:1",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_5000_by_1",
                "typeString": "int_const 5000"
              },
              "value": "5000"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2255,
            "name": "ALL_TOKEN_FILTER",
            "nodeType": "VariableDeclaration",
            "scope": 3517,
            "src": "775:32:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_uint16_$dyn_storage",
              "typeString": "uint16[]"
            },
            "typeName": {
              "baseType": {
                "id": 2253,
                "name": "uint16",
                "nodeType": "ElementaryTypeName",
                "src": "775:6:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint16",
                  "typeString": "uint16"
                }
              },
              "id": 2254,
              "length": null,
              "nodeType": "ArrayTypeName",
              "src": "775:8:1",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_uint16_$dyn_storage_ptr",
                "typeString": "uint16[]"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2257,
            "name": "batchExchange",
            "nodeType": "VariableDeclaration",
            "scope": 3517,
            "src": "814:27:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_BatchExchange_$2226",
              "typeString": "contract BatchExchange"
            },
            "typeName": {
              "contractScope": null,
              "id": 2256,
              "name": "BatchExchange",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2226,
              "src": "814:13:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BatchExchange_$2226",
                "typeString": "contract BatchExchange"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2266,
              "nodeType": "Block",
              "src": "891:41:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2264,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2262,
                      "name": "batchExchange",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2257,
                      "src": "901:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_BatchExchange_$2226",
                        "typeString": "contract BatchExchange"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2263,
                      "name": "exchange",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2259,
                      "src": "917:8:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_BatchExchange_$2226",
                        "typeString": "contract BatchExchange"
                      }
                    },
                    "src": "901:24:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BatchExchange_$2226",
                      "typeString": "contract BatchExchange"
                    }
                  },
                  "id": 2265,
                  "nodeType": "ExpressionStatement",
                  "src": "901:24:1"
                }
              ]
            },
            "documentation": null,
            "id": 2267,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2260,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2259,
                  "name": "exchange",
                  "nodeType": "VariableDeclaration",
                  "scope": 2267,
                  "src": "860:22:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_BatchExchange_$2226",
                    "typeString": "contract BatchExchange"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2258,
                    "name": "BatchExchange",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2226,
                    "src": "860:13:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BatchExchange_$2226",
                      "typeString": "contract BatchExchange"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "859:24:1"
            },
            "returnParameters": {
              "id": 2261,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "891:0:1"
            },
            "scope": 3517,
            "src": "848:84:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2300,
              "nodeType": "Block",
              "src": "1315:324:1",
              "statements": [
                {
                  "assignments": [
                    2276,
                    null,
                    null,
                    null
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2276,
                      "name": "elements",
                      "nodeType": "VariableDeclaration",
                      "scope": 2300,
                      "src": "1326:21:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 2275,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1326:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    null,
                    null,
                    null
                  ],
                  "id": 2285,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2278,
                        "name": "tokenFilter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2270,
                        "src": "1383:11:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2280,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1404:1:1",
                            "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": 2279,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1396:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 2281,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1396:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2282,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1408:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "id": 2283,
                        "name": "LARGE_PAGE_SIZE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2252,
                        "src": "1411:15:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      ],
                      "id": 2277,
                      "name": "getOpenOrderBookPaginated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2343,
                      "src": "1357:25:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$_t_uint16_$_t_uint16_$returns$_t_bytes_memory_ptr_$_t_bool_$_t_address_$_t_uint16_$",
                        "typeString": "function (address[] memory,address,uint16,uint16) view returns (bytes memory,bool,address,uint16)"
                      }
                    },
                    "id": 2284,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1357:70:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_bool_$_t_address_$_t_uint16_$",
                      "typeString": "tuple(bytes memory,bool,address,uint16)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1325:102:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2294,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2287,
                            "name": "elements",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2276,
                            "src": "1458:8:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 2288,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1458:15:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2293,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2290,
                                "name": "LARGE_PAGE_SIZE",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2252,
                                "src": "1484:15:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              ],
                              "id": 2289,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1476:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": "uint256"
                            },
                            "id": 2291,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1476:24:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2292,
                            "name": "INDEXED_AUCTION_ELEMENT_WIDTH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2246,
                            "src": "1503:29:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "1476:56:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1458:74:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f72646572626f6f6b20746f6f206c617267652c2075736520706167696e6174656420766965772066756e6374696f6e73",
                        "id": 2295,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1546:51:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_64c189c1db3114a6270423433e5200886fc8dc45e18ee1766c9d5b6794e49834",
                          "typeString": "literal_string \"Orderbook too large, use paginated view functions\""
                        },
                        "value": "Orderbook too large, use paginated view functions"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_64c189c1db3114a6270423433e5200886fc8dc45e18ee1766c9d5b6794e49834",
                          "typeString": "literal_string \"Orderbook too large, use paginated view functions\""
                        }
                      ],
                      "id": 2286,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10245,
                        10246
                      ],
                      "referencedDeclaration": 10246,
                      "src": "1437:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2296,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1437:170:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2297,
                  "nodeType": "ExpressionStatement",
                  "src": "1437:170:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2298,
                    "name": "elements",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2276,
                    "src": "1624:8:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 2274,
                  "id": 2299,
                  "nodeType": "Return",
                  "src": "1617:15:1"
                }
              ]
            },
            "documentation": "@dev Queries the orderbook for the auction that is still accepting orders\n @param tokenFilter all returned order will have buy *and* sell token from this list (leave empty for \"no filter\")\n @return encoded bytes representing orders, maxed at 5000 elements",
            "id": 2301,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getOpenOrderBook",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2271,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2270,
                  "name": "tokenFilter",
                  "nodeType": "VariableDeclaration",
                  "scope": 2301,
                  "src": "1250:28:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2268,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1250:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2269,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1250:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1249:30:1"
            },
            "returnParameters": {
              "id": 2274,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2273,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2301,
                  "src": "1301:12:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2272,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1301:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1300:14:1"
            },
            "scope": 3517,
            "src": "1224:415:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2342,
              "nodeType": "Block",
              "src": "2687:334:1",
              "statements": [
                {
                  "assignments": [
                    2322
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2322,
                      "name": "batch",
                      "nodeType": "VariableDeclaration",
                      "scope": 2342,
                      "src": "2697:12:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 2321,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2697:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2326,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2323,
                        "name": "batchExchange",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2257,
                        "src": "2712:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_BatchExchange_$2226",
                          "typeString": "contract BatchExchange"
                        }
                      },
                      "id": 2324,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getCurrentBatchId",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3888,
                      "src": "2712:31:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint32_$",
                        "typeString": "function () view external returns (uint32)"
                      }
                    },
                    "id": 2325,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2712:33:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2697:48:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "id": 2328,
                            "name": "batch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2322,
                            "src": "2819:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2329,
                            "name": "batch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2322,
                            "src": "2826:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "id": 2332,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2330,
                              "name": "batch",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2322,
                              "src": "2833:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 2331,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2841:1:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "2833:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          }
                        ],
                        "id": 2333,
                        "isConstant": false,
                        "isInlineArray": true,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "2818:25:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint32_$3_memory_ptr",
                          "typeString": "uint32[3] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2335,
                            "name": "tokenFilter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2304,
                            "src": "2885:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          ],
                          "id": 2334,
                          "name": "getTokenIdsFromAdresses",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3111,
                          "src": "2861:23:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint16_$dyn_memory_ptr_$",
                            "typeString": "function (address[] memory) view returns (uint16[] memory)"
                          }
                        },
                        "id": 2336,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2861:36:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                          "typeString": "uint16[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2337,
                        "name": "previousPageUser",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2306,
                        "src": "2915:16:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2338,
                        "name": "previousPageUserOffset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2308,
                        "src": "2949:22:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2339,
                        "name": "maxPageSize",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2310,
                        "src": "2989:11:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_uint32_$3_memory_ptr",
                          "typeString": "uint32[3] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                          "typeString": "uint16[] memory"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      ],
                      "id": 2327,
                      "name": "getFilteredOrdersPaginated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2649,
                      "src": "2774:26:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_array$_t_uint32_$3_memory_ptr_$_t_array$_t_uint16_$dyn_memory_ptr_$_t_address_$_t_uint16_$_t_uint16_$returns$_t_bytes_memory_ptr_$_t_bool_$_t_address_$_t_uint16_$",
                        "typeString": "function (uint32[3] memory,uint16[] memory,address,uint16,uint16) view returns (bytes memory,bool,address,uint16)"
                      }
                    },
                    "id": 2340,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2774:240:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_bool_$_t_address_$_t_uint16_$",
                      "typeString": "tuple(bytes memory,bool,address,uint16)"
                    }
                  },
                  "functionReturnParameters": 2320,
                  "id": 2341,
                  "nodeType": "Return",
                  "src": "2755:259:1"
                }
              ]
            },
            "documentation": "@dev Queries a page of the orderbook for the auction that is still accepting orders\n @param tokenFilter all returned order will have buy *and* sell token from this list (leave empty for \"no filter\")\n @param previousPageUser address taken from nextPageUser return value from last page (address(0) for first page)\n @param previousPageUserOffset offset taken nextPageUserOffset return value from last page (0 for first page)\n @param maxPageSize count of elements to be returned per page (same value is used for subqueries on the exchange)\n @return encoded bytes representing orders and page information for next page",
            "id": 2343,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getOpenOrderBookPaginated",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2311,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2304,
                  "name": "tokenFilter",
                  "nodeType": "VariableDeclaration",
                  "scope": 2343,
                  "src": "2354:28:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2302,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2354:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2303,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "2354:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2306,
                  "name": "previousPageUser",
                  "nodeType": "VariableDeclaration",
                  "scope": 2343,
                  "src": "2392:24:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2305,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2392:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2308,
                  "name": "previousPageUserOffset",
                  "nodeType": "VariableDeclaration",
                  "scope": 2343,
                  "src": "2426:29:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 2307,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "2426:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2310,
                  "name": "maxPageSize",
                  "nodeType": "VariableDeclaration",
                  "scope": 2343,
                  "src": "2465:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 2309,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "2465:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2344:145:1"
            },
            "returnParameters": {
              "id": 2320,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2313,
                  "name": "elements",
                  "nodeType": "VariableDeclaration",
                  "scope": 2343,
                  "src": "2548:21:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2312,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2548:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2315,
                  "name": "hasNextPage",
                  "nodeType": "VariableDeclaration",
                  "scope": 2343,
                  "src": "2583:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2314,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2583:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2317,
                  "name": "nextPageUser",
                  "nodeType": "VariableDeclaration",
                  "scope": 2343,
                  "src": "2613:20:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2316,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2613:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2319,
                  "name": "nextPageUserOffset",
                  "nodeType": "VariableDeclaration",
                  "scope": 2343,
                  "src": "2647:25:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 2318,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "2647:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2534:148:1"
            },
            "scope": 3517,
            "src": "2310:711:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2376,
              "nodeType": "Block",
              "src": "3409:329:1",
              "statements": [
                {
                  "assignments": [
                    2352,
                    null,
                    null,
                    null
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2352,
                      "name": "elements",
                      "nodeType": "VariableDeclaration",
                      "scope": 2376,
                      "src": "3420:21:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 2351,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "3420:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    null,
                    null,
                    null
                  ],
                  "id": 2361,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2354,
                        "name": "tokenFilter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2346,
                        "src": "3482:11:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2356,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3503:1:1",
                            "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": 2355,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3495:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 2357,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3495:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2358,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3507:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "id": 2359,
                        "name": "LARGE_PAGE_SIZE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2252,
                        "src": "3510:15:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      ],
                      "id": 2353,
                      "name": "getFinalizedOrderBookPaginated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2421,
                      "src": "3451:30:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$_t_uint16_$_t_uint16_$returns$_t_bytes_memory_ptr_$_t_bool_$_t_address_$_t_uint16_$",
                        "typeString": "function (address[] memory,address,uint16,uint16) view returns (bytes memory,bool,address,uint16)"
                      }
                    },
                    "id": 2360,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3451:75:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_bool_$_t_address_$_t_uint16_$",
                      "typeString": "tuple(bytes memory,bool,address,uint16)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3419:107:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2370,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2363,
                            "name": "elements",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2352,
                            "src": "3557:8:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 2364,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3557:15:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2369,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2366,
                                "name": "LARGE_PAGE_SIZE",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2252,
                                "src": "3583:15:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              ],
                              "id": 2365,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3575:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": "uint256"
                            },
                            "id": 2367,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3575:24:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2368,
                            "name": "INDEXED_AUCTION_ELEMENT_WIDTH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2246,
                            "src": "3602:29:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "3575:56:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3557:74:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f72646572626f6f6b20746f6f206c617267652c2075736520706167696e6174656420766965772066756e6374696f6e73",
                        "id": 2371,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3645:51:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_64c189c1db3114a6270423433e5200886fc8dc45e18ee1766c9d5b6794e49834",
                          "typeString": "literal_string \"Orderbook too large, use paginated view functions\""
                        },
                        "value": "Orderbook too large, use paginated view functions"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_64c189c1db3114a6270423433e5200886fc8dc45e18ee1766c9d5b6794e49834",
                          "typeString": "literal_string \"Orderbook too large, use paginated view functions\""
                        }
                      ],
                      "id": 2362,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10245,
                        10246
                      ],
                      "referencedDeclaration": 10246,
                      "src": "3536:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2372,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3536:170:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2373,
                  "nodeType": "ExpressionStatement",
                  "src": "3536:170:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2374,
                    "name": "elements",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2352,
                    "src": "3723:8:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 2350,
                  "id": 2375,
                  "nodeType": "Return",
                  "src": "3716:15:1"
                }
              ]
            },
            "documentation": "@dev Queries the orderbook for the auction that is currently being solved\n @param tokenFilter all returned order will have buy *and* sell token from this list (leave empty for \"no filter\")\n @return encoded bytes representing orders, maxed at 5000 elements",
            "id": 2377,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getFinalizedOrderBook",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2347,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2346,
                  "name": "tokenFilter",
                  "nodeType": "VariableDeclaration",
                  "scope": 2377,
                  "src": "3344:28:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2344,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "3344:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2345,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "3344:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3343:30:1"
            },
            "returnParameters": {
              "id": 2350,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2349,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2377,
                  "src": "3395:12:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2348,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3395:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3394:14:1"
            },
            "scope": 3517,
            "src": "3313:425:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2420,
              "nodeType": "Block",
              "src": "4791:338:1",
              "statements": [
                {
                  "assignments": [
                    2398
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2398,
                      "name": "batch",
                      "nodeType": "VariableDeclaration",
                      "scope": 2420,
                      "src": "4801:12:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 2397,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4801:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2402,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2399,
                        "name": "batchExchange",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2257,
                        "src": "4816:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_BatchExchange_$2226",
                          "typeString": "contract BatchExchange"
                        }
                      },
                      "id": 2400,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getCurrentBatchId",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3888,
                      "src": "4816:31:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint32_$",
                        "typeString": "function () view external returns (uint32)"
                      }
                    },
                    "id": 2401,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4816:33:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4801:48:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "id": 2406,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2404,
                              "name": "batch",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2398,
                              "src": "4923:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 2405,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4931:1:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "4923:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "id": 2409,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2407,
                              "name": "batch",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2398,
                              "src": "4934:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 2408,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4942:1:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "4934:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2410,
                            "name": "batch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2398,
                            "src": "4945:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          }
                        ],
                        "id": 2411,
                        "isConstant": false,
                        "isInlineArray": true,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "4922:29:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint32_$3_memory_ptr",
                          "typeString": "uint32[3] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2413,
                            "name": "tokenFilter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2380,
                            "src": "4993:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          ],
                          "id": 2412,
                          "name": "getTokenIdsFromAdresses",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3111,
                          "src": "4969:23:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint16_$dyn_memory_ptr_$",
                            "typeString": "function (address[] memory) view returns (uint16[] memory)"
                          }
                        },
                        "id": 2414,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4969:36:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                          "typeString": "uint16[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2415,
                        "name": "previousPageUser",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2382,
                        "src": "5023:16:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2416,
                        "name": "previousPageUserOffset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2384,
                        "src": "5057:22:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2417,
                        "name": "maxPageSize",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2386,
                        "src": "5097:11:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_uint32_$3_memory_ptr",
                          "typeString": "uint32[3] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                          "typeString": "uint16[] memory"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      ],
                      "id": 2403,
                      "name": "getFilteredOrdersPaginated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2649,
                      "src": "4878:26:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_array$_t_uint32_$3_memory_ptr_$_t_array$_t_uint16_$dyn_memory_ptr_$_t_address_$_t_uint16_$_t_uint16_$returns$_t_bytes_memory_ptr_$_t_bool_$_t_address_$_t_uint16_$",
                        "typeString": "function (uint32[3] memory,uint16[] memory,address,uint16,uint16) view returns (bytes memory,bool,address,uint16)"
                      }
                    },
                    "id": 2418,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4878:244:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_bool_$_t_address_$_t_uint16_$",
                      "typeString": "tuple(bytes memory,bool,address,uint16)"
                    }
                  },
                  "functionReturnParameters": 2396,
                  "id": 2419,
                  "nodeType": "Return",
                  "src": "4859:263:1"
                }
              ]
            },
            "documentation": "@dev Queries a page of the orderbook for the auction that is currently being solved\n @param tokenFilter all returned order will have buy *and* sell token from this list (leave empty for \"no filter\")\n @param previousPageUser address taken from nextPageUser return value from last page (address(0) for first page)\n @param previousPageUserOffset offset taken nextPageUserOffset return value from last page (0 for first page)\n @param maxPageSize count of elements to be returned per page (same value is used for subqueries on the exchange)\n @return encoded bytes representing orders and page information for next page",
            "id": 2421,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getFinalizedOrderBookPaginated",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2387,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2380,
                  "name": "tokenFilter",
                  "nodeType": "VariableDeclaration",
                  "scope": 2421,
                  "src": "4458:28:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2378,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "4458:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2379,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "4458:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2382,
                  "name": "previousPageUser",
                  "nodeType": "VariableDeclaration",
                  "scope": 2421,
                  "src": "4496:24:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2381,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4496:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2384,
                  "name": "previousPageUserOffset",
                  "nodeType": "VariableDeclaration",
                  "scope": 2421,
                  "src": "4530:29:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 2383,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "4530:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2386,
                  "name": "maxPageSize",
                  "nodeType": "VariableDeclaration",
                  "scope": 2421,
                  "src": "4569:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 2385,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "4569:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4448:145:1"
            },
            "returnParameters": {
              "id": 2396,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2389,
                  "name": "elements",
                  "nodeType": "VariableDeclaration",
                  "scope": 2421,
                  "src": "4652:21:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2388,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "4652:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2391,
                  "name": "hasNextPage",
                  "nodeType": "VariableDeclaration",
                  "scope": 2421,
                  "src": "4687:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2390,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4687:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2393,
                  "name": "nextPageUser",
                  "nodeType": "VariableDeclaration",
                  "scope": 2421,
                  "src": "4717:20:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2392,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4717:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2395,
                  "name": "nextPageUserOffset",
                  "nodeType": "VariableDeclaration",
                  "scope": 2421,
                  "src": "4751:25:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 2394,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "4751:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4638:148:1"
            },
            "scope": 3517,
            "src": "4409:720:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2648,
              "nodeType": "Block",
              "src": "7017:2828:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2454,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2445,
                      "name": "elements",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2437,
                      "src": "7027:8:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2452,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2449,
                                "name": "maxPageSize",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2434,
                                "src": "7056:11:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              ],
                              "id": 2448,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7048:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": "uint256"
                            },
                            "id": 2450,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7048:20:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2451,
                            "name": "INDEXED_AUCTION_ELEMENT_WIDTH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2246,
                            "src": "7071:29:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "7048:52:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 2447,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "NewExpression",
                        "src": "7038:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$",
                          "typeString": "function (uint256) pure returns (bytes memory)"
                        },
                        "typeName": {
                          "id": 2446,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7042:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        }
                      },
                      "id": 2453,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7038:63:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "7027:74:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "id": 2455,
                  "nodeType": "ExpressionStatement",
                  "src": "7027:74:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2457,
                        "name": "elements",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2437,
                        "src": "7121:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2458,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7131:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 2456,
                      "name": "setLength",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3369,
                      "src": "7111:9:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes memory,uint256) pure"
                      }
                    },
                    "id": 2459,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7111:22:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2460,
                  "nodeType": "ExpressionStatement",
                  "src": "7111:22:1"
                },
                {
                  "assignments": [
                    2462
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2462,
                      "name": "unfiltered",
                      "nodeType": "VariableDeclaration",
                      "scope": 2648,
                      "src": "7143:23:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 2461,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "7143:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2471,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2469,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2466,
                              "name": "maxPageSize",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2434,
                              "src": "7187:11:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            ],
                            "id": 2465,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "7179:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": "uint256"
                          },
                          "id": 2467,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7179:20:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "*",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2468,
                          "name": "AUCTION_ELEMENT_WIDTH",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2241,
                          "src": "7202:21:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "src": "7179:44:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2464,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "7169:9:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$",
                        "typeString": "function (uint256) pure returns (bytes memory)"
                      },
                      "typeName": {
                        "id": 2463,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "7173:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      }
                    },
                    "id": 2470,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7169:55:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7143:81:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2474,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2472,
                      "name": "nextPageUser",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2441,
                      "src": "7234:12:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2473,
                      "name": "previousPageUser",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2430,
                      "src": "7249:16:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "7234:31:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2475,
                  "nodeType": "ExpressionStatement",
                  "src": "7234:31:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2478,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2476,
                      "name": "nextPageUserOffset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2443,
                      "src": "7275:18:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2477,
                      "name": "previousPageUserOffset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2432,
                      "src": "7296:22:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "7275:43:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "id": 2479,
                  "nodeType": "ExpressionStatement",
                  "src": "7275:43:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2482,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2480,
                      "name": "hasNextPage",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2439,
                      "src": "7328:11:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 2481,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7342:4:1",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "7328:18:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2483,
                  "nodeType": "ExpressionStatement",
                  "src": "7328:18:1"
                },
                {
                  "assignments": [
                    2485
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2485,
                      "name": "gasLeftBeforePage",
                      "nodeType": "VariableDeclaration",
                      "scope": 2648,
                      "src": "7356:25:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2484,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7356:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2488,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 2486,
                      "name": "gasleft",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10235,
                      "src": "7384:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                        "typeString": "function () view returns (uint256)"
                      }
                    },
                    "id": 2487,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7384:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7356:37:1"
                },
                {
                  "body": {
                    "id": 2640,
                    "nodeType": "Block",
                    "src": "7570:2195:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2502,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2499,
                            "name": "gasLeftBeforePage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2485,
                            "src": "7584:17:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 2500,
                              "name": "gasleft",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10235,
                              "src": "7604:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                                "typeString": "function () view returns (uint256)"
                              }
                            },
                            "id": 2501,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7604:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7584:29:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2503,
                        "nodeType": "ExpressionStatement",
                        "src": "7584:29:1"
                      },
                      {
                        "assignments": [
                          2505
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2505,
                            "name": "unfilteredCount",
                            "nodeType": "VariableDeclaration",
                            "scope": 2640,
                            "src": "7627:23:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2504,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7627:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2512,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2507,
                              "name": "tokenFilter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2428,
                              "src": "7713:11:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                                "typeString": "uint16[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2508,
                              "name": "nextPageUser",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2441,
                              "src": "7742:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2509,
                              "name": "nextPageUserOffset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2443,
                              "src": "7772:18:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2510,
                              "name": "unfiltered",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2462,
                              "src": "7808:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                                "typeString": "uint16[] memory"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 2506,
                            "name": "writeEncodedOrdersPaginatedWithTokenFilter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2839,
                            "src": "7653:42:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_array$_t_uint16_$dyn_memory_ptr_$_t_address_$_t_uint16_$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                              "typeString": "function (uint16[] memory,address,uint16,bytes memory) view returns (uint256)"
                            }
                          },
                          "id": 2511,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7653:179:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7627:205:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2517,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2513,
                            "name": "hasNextPage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2439,
                            "src": "7846:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2516,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2514,
                              "name": "unfilteredCount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2505,
                              "src": "7860:15:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2515,
                              "name": "maxPageSize",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2434,
                              "src": "7879:11:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            "src": "7860:30:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7846:44:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2518,
                        "nodeType": "ExpressionStatement",
                        "src": "7846:44:1"
                      },
                      {
                        "body": {
                          "id": 2638,
                          "nodeType": "Block",
                          "src": "7961:1794:1",
                          "statements": [
                            {
                              "assignments": [
                                2530
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2530,
                                  "name": "element",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2638,
                                  "src": "8056:20:1",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes"
                                  },
                                  "typeName": {
                                    "id": 2529,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8056:5:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_storage_ptr",
                                      "typeString": "bytes"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2540,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2537,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 2534,
                                          "name": "index",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2520,
                                          "src": "8104:5:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint16",
                                            "typeString": "uint16"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint16",
                                            "typeString": "uint16"
                                          }
                                        ],
                                        "id": 2533,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "8096:7:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint256_$",
                                          "typeString": "type(uint256)"
                                        },
                                        "typeName": "uint256"
                                      },
                                      "id": 2535,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8096:14:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 2536,
                                      "name": "AUCTION_ELEMENT_WIDTH",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2241,
                                      "src": "8113:21:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "src": "8096:38:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2538,
                                    "name": "AUCTION_ELEMENT_WIDTH",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2241,
                                    "src": "8136:21:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2531,
                                    "name": "unfiltered",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2462,
                                    "src": "8079:10:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 2532,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "slice",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 9877,
                                  "src": "8079:16:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                                  }
                                },
                                "id": 2539,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8079:79:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "8056:102:1"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2548,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 2541,
                                  "name": "element",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2530,
                                  "src": "8176:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2543,
                                      "name": "element",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2530,
                                      "src": "8219:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 2544,
                                        "name": "batchIds",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2425,
                                        "src": "8228:8:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint32_$3_memory_ptr",
                                          "typeString": "uint32[3] memory"
                                        }
                                      },
                                      "id": 2546,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "32",
                                        "id": 2545,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8237:1:1",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_2_by_1",
                                          "typeString": "int_const 2"
                                        },
                                        "value": "2"
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "8228:11:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      },
                                      {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    ],
                                    "id": 2542,
                                    "name": "updateSellTokenBalanceForBatchId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3211,
                                    "src": "8186:32:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$_t_uint32_$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function (bytes memory,uint32) view returns (bytes memory)"
                                    }
                                  },
                                  "id": 2547,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8186:54:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "src": "8176:64:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 2549,
                              "nodeType": "ExpressionStatement",
                              "src": "8176:64:1"
                            },
                            {
                              "assignments": [
                                2551
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2551,
                                  "name": "user",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2638,
                                  "src": "8300:12:1",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 2550,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8300:7:1",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2555,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2553,
                                    "name": "element",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2530,
                                    "src": "8323:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 2552,
                                  "name": "getUser",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2928,
                                  "src": "8315:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$",
                                    "typeString": "function (bytes memory) pure returns (address)"
                                  }
                                },
                                "id": 2554,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8315:16:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "8300:31:1"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 2558,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2556,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2551,
                                  "src": "8353:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2557,
                                  "name": "nextPageUser",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2441,
                                  "src": "8361:12:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "8353:20:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 2572,
                                "nodeType": "Block",
                                "src": "8445:104:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2566,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 2564,
                                        "name": "nextPageUserOffset",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2443,
                                        "src": "8467:18:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "hexValue": "31",
                                        "id": 2565,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8488:1:1",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "8467:22:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    },
                                    "id": 2567,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8467:22:1"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2570,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 2568,
                                        "name": "nextPageUser",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2441,
                                        "src": "8511:12:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "id": 2569,
                                        "name": "user",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2551,
                                        "src": "8526:4:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "8511:19:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "id": 2571,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8511:19:1"
                                  }
                                ]
                              },
                              "id": 2573,
                              "nodeType": "IfStatement",
                              "src": "8349:200:1",
                              "trueBody": {
                                "id": 2563,
                                "nodeType": "Block",
                                "src": "8375:64:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2561,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 2559,
                                        "name": "nextPageUserOffset",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2443,
                                        "src": "8397:18:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "+=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "hexValue": "31",
                                        "id": 2560,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8419:1:1",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "8397:23:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    },
                                    "id": 2562,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8397:23:1"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 2588,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  },
                                  "id": 2580,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 2574,
                                      "name": "batchIds",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2425,
                                      "src": "8570:8:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint32_$3_memory_ptr",
                                        "typeString": "uint32[3] memory"
                                      }
                                    },
                                    "id": 2576,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 2575,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "8579:1:1",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "8570:11:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2578,
                                        "name": "element",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2530,
                                        "src": "8598:7:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "id": 2577,
                                      "name": "getValidFrom",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3043,
                                      "src": "8585:12:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint32_$",
                                        "typeString": "function (bytes memory) pure returns (uint32)"
                                      }
                                    },
                                    "id": 2579,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8585:21:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "src": "8570:36:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  },
                                  "id": 2587,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 2581,
                                      "name": "batchIds",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2425,
                                      "src": "8610:8:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint32_$3_memory_ptr",
                                        "typeString": "uint32[3] memory"
                                      }
                                    },
                                    "id": 2583,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 2582,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "8619:1:1",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "8610:11:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2585,
                                        "name": "element",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2530,
                                        "src": "8639:7:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "id": 2584,
                                      "name": "getValidUntil",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3064,
                                      "src": "8625:13:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint32_$",
                                        "typeString": "function (bytes memory) pure returns (uint32)"
                                      }
                                    },
                                    "id": 2586,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8625:22:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "src": "8610:37:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "8570:77:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 2623,
                              "nodeType": "IfStatement",
                              "src": "8566:637:1",
                              "trueBody": {
                                "id": 2622,
                                "nodeType": "Block",
                                "src": "8649:554:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 2590,
                                          "name": "elements",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2437,
                                          "src": "8681:8:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 2594,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 2591,
                                              "name": "elements",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2437,
                                              "src": "8691:8:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            },
                                            "id": 2592,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "length",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "8691:15:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "+",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 2593,
                                            "name": "INDEXED_AUCTION_ELEMENT_WIDTH",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2246,
                                            "src": "8709:29:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          },
                                          "src": "8691:47:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 2589,
                                        "name": "setLength",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3369,
                                        "src": "8671:9:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$__$",
                                          "typeString": "function (bytes memory,uint256) pure"
                                        }
                                      },
                                      "id": 2595,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8671:68:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 2596,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8671:68:1"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 2598,
                                          "name": "element",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2530,
                                          "src": "8773:7:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2599,
                                          "name": "elements",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2437,
                                          "src": "8782:8:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 2603,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 2600,
                                              "name": "elements",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2437,
                                              "src": "8792:8:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            },
                                            "id": 2601,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "length",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "8792:15:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 2602,
                                            "name": "INDEXED_AUCTION_ELEMENT_WIDTH",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2246,
                                            "src": "8810:29:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          },
                                          "src": "8792:47:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 2597,
                                        "name": "copyInPlace",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3402,
                                        "src": "8761:11:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$",
                                          "typeString": "function (bytes memory,bytes memory,uint256) pure"
                                        }
                                      },
                                      "id": 2604,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8761:79:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 2605,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8761:79:1"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_uint16",
                                                "typeString": "uint16"
                                              },
                                              "id": 2611,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "argumentTypes": null,
                                                "id": 2609,
                                                "name": "nextPageUserOffset",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2443,
                                                "src": "9008:18:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint16",
                                                  "typeString": "uint16"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "-",
                                              "rightExpression": {
                                                "argumentTypes": null,
                                                "hexValue": "31",
                                                "id": 2610,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "9029:1:1",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_1_by_1",
                                                  "typeString": "int_const 1"
                                                },
                                                "value": "1"
                                              },
                                              "src": "9008:22:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint16",
                                                "typeString": "uint16"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint16",
                                                "typeString": "uint16"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 2607,
                                              "name": "abi",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 10229,
                                              "src": "8991:3:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_magic_abi",
                                                "typeString": "abi"
                                              }
                                            },
                                            "id": 2608,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "encodePacked",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "8991:16:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                              "typeString": "function () pure returns (bytes memory)"
                                            }
                                          },
                                          "id": 2612,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "8991:40:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2613,
                                          "name": "elements",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2437,
                                          "src": "9057:8:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 2619,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 2617,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 2614,
                                                "name": "elements",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2437,
                                                "src": "9091:8:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              },
                                              "id": 2615,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "length",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": null,
                                              "src": "9091:15:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "-",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "id": 2616,
                                              "name": "INDEXED_AUCTION_ELEMENT_WIDTH",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2246,
                                              "src": "9109:29:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "src": "9091:47:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "+",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 2618,
                                            "name": "AUCTION_ELEMENT_WIDTH",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2241,
                                            "src": "9141:21:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          },
                                          "src": "9091:71:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 2606,
                                        "name": "copyInPlace",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3402,
                                        "src": "8954:11:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$",
                                          "typeString": "function (bytes memory,bytes memory,uint256) pure"
                                        }
                                      },
                                      "id": 2620,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8954:230:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 2621,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8954:230:1"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2629,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2624,
                                    "name": "elements",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2437,
                                    "src": "9224:8:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 2625,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "9224:15:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  },
                                  "id": 2628,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2626,
                                    "name": "maxPageSize",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2434,
                                    "src": "9243:11:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 2627,
                                    "name": "INDEXED_AUCTION_ELEMENT_WIDTH",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2246,
                                    "src": "9257:29:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "src": "9243:43:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "src": "9224:62:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 2637,
                              "nodeType": "IfStatement",
                              "src": "9220:521:1",
                              "trueBody": {
                                "id": 2636,
                                "nodeType": "Block",
                                "src": "9288:453:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "id": 2630,
                                          "name": "elements",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2437,
                                          "src": "9673:8:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "74727565",
                                          "id": 2631,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "bool",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "9683:4:1",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          "value": "true"
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2632,
                                          "name": "nextPageUser",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2441,
                                          "src": "9689:12:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2633,
                                          "name": "nextPageUserOffset",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2443,
                                          "src": "9703:18:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint16",
                                            "typeString": "uint16"
                                          }
                                        }
                                      ],
                                      "id": 2634,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "9672:50:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_bool_$_t_address_$_t_uint16_$",
                                        "typeString": "tuple(bytes memory,bool,address,uint16)"
                                      }
                                    },
                                    "functionReturnParameters": 2444,
                                    "id": 2635,
                                    "nodeType": "Return",
                                    "src": "9665:57:1"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2525,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2523,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2520,
                            "src": "7927:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2524,
                            "name": "unfilteredCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2505,
                            "src": "7935:15:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7927:23:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2639,
                        "initializationExpression": {
                          "assignments": [
                            2520
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 2520,
                              "name": "index",
                              "nodeType": "VariableDeclaration",
                              "scope": 2639,
                              "src": "7909:12:1",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              },
                              "typeName": {
                                "id": 2519,
                                "name": "uint16",
                                "nodeType": "ElementaryTypeName",
                                "src": "7909:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 2522,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2521,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7924:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "7909:16:1"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 2527,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "7952:7:1",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 2526,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2520,
                              "src": "7952:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "id": 2528,
                          "nodeType": "ExpressionStatement",
                          "src": "7952:7:1"
                        },
                        "nodeType": "ForStatement",
                        "src": "7904:1851:1"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 2498,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2489,
                      "name": "hasNextPage",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2439,
                      "src": "7516:11:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 2497,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2493,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "hexValue": "35",
                          "id": 2490,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7531:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_5_by_1",
                            "typeString": "int_const 5"
                          },
                          "value": "5"
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "*",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 2491,
                            "name": "gasleft",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10235,
                            "src": "7535:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                              "typeString": "function () view returns (uint256)"
                            }
                          },
                          "id": 2492,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7535:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7531:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2496,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "hexValue": "33",
                          "id": 2494,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7547:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_3_by_1",
                            "typeString": "int_const 3"
                          },
                          "value": "3"
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "*",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2495,
                          "name": "gasLeftBeforePage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2485,
                          "src": "7551:17:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7547:21:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "7531:37:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "7516:52:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2641,
                  "nodeType": "WhileStatement",
                  "src": "7509:2256:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 2642,
                        "name": "elements",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2437,
                        "src": "9782:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2643,
                        "name": "hasNextPage",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2439,
                        "src": "9792:11:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2644,
                        "name": "nextPageUser",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2441,
                        "src": "9805:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2645,
                        "name": "nextPageUserOffset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2443,
                        "src": "9819:18:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      }
                    ],
                    "id": 2646,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "9781:57:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_bool_$_t_address_$_t_uint16_$",
                      "typeString": "tuple(bytes memory,bool,address,uint16)"
                    }
                  },
                  "functionReturnParameters": 2444,
                  "id": 2647,
                  "nodeType": "Return",
                  "src": "9774:64:1"
                }
              ]
            },
            "documentation": "@dev Queries a page in the list of all orders\n @param batchIds Triple with the following values [maxValidFrom, minValidUntil, sellBalanceTargetBatchIndex]\n Batched together as we are running out of local variables (Solidity does not compile with Stack too deep error)\n     - maxValidFrom: all returned orders will have a validFrom <= this value (they were placed at or before that batch)\n     - minValidUntil all returned orders will have a validUntil >= this value (validity ends at or after that batch)\n     - sellBalanceTargetBatchIndex the batchIndex at which we are expecting the sellTokenBalance to be valid\n(e.g. in the current live orderbook we want to include sellBalances that are valid in currentBatch + 1).\n @param tokenFilter all returned order will have buy *and* sell token from this list (leave empty for \"no filter\")\n @param previousPageUser address taken from nextPageUser return value from last page (address(0) for first page)\n @param previousPageUserOffset offset taken nextPageUserOffset return value from last page (0 for first page)\n @param maxPageSize maximum count of elements to be returned per page (same value is used for subqueries on the exchange)\n @return encoded bytes representing orders and page information for next page. Result can contain less elements than\n maxPageSize if remaining gas is low.",
            "id": 2649,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getFilteredOrdersPaginated",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2435,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2425,
                  "name": "batchIds",
                  "nodeType": "VariableDeclaration",
                  "scope": 2649,
                  "src": "6615:25:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint32_$3_memory_ptr",
                    "typeString": "uint32[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2422,
                      "name": "uint32",
                      "nodeType": "ElementaryTypeName",
                      "src": "6615:6:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "id": 2424,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 2423,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6622:1:1",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_3_by_1",
                        "typeString": "int_const 3"
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "6615:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint32_$3_storage_ptr",
                      "typeString": "uint32[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2428,
                  "name": "tokenFilter",
                  "nodeType": "VariableDeclaration",
                  "scope": 2649,
                  "src": "6685:27:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                    "typeString": "uint16[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2426,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "6685:6:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 2427,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "6685:8:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$dyn_storage_ptr",
                      "typeString": "uint16[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2430,
                  "name": "previousPageUser",
                  "nodeType": "VariableDeclaration",
                  "scope": 2649,
                  "src": "6722:24:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2429,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6722:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2432,
                  "name": "previousPageUserOffset",
                  "nodeType": "VariableDeclaration",
                  "scope": 2649,
                  "src": "6756:29:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 2431,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "6756:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2434,
                  "name": "maxPageSize",
                  "nodeType": "VariableDeclaration",
                  "scope": 2649,
                  "src": "6795:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 2433,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "6795:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6605:214:1"
            },
            "returnParameters": {
              "id": 2444,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2437,
                  "name": "elements",
                  "nodeType": "VariableDeclaration",
                  "scope": 2649,
                  "src": "6878:21:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2436,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "6878:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2439,
                  "name": "hasNextPage",
                  "nodeType": "VariableDeclaration",
                  "scope": 2649,
                  "src": "6913:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2438,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6913:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2441,
                  "name": "nextPageUser",
                  "nodeType": "VariableDeclaration",
                  "scope": 2649,
                  "src": "6943:20:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2440,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6943:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2443,
                  "name": "nextPageUserOffset",
                  "nodeType": "VariableDeclaration",
                  "scope": 2649,
                  "src": "6977:25:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 2442,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "6977:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6864:148:1"
            },
            "scope": 3517,
            "src": "6570:3275:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2667,
              "nodeType": "Block",
              "src": "10637:134:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2661,
                        "name": "ALL_TOKEN_FILTER",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2255,
                        "src": "10695:16:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint16_$dyn_storage",
                          "typeString": "uint16[] storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2662,
                        "name": "previousPageUser",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2651,
                        "src": "10713:16:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2663,
                        "name": "previousPageUserOffset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2653,
                        "src": "10731:22:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2664,
                        "name": "pageSize",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2655,
                        "src": "10755:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_uint16_$dyn_storage",
                          "typeString": "uint16[] storage ref"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2660,
                      "name": "getEncodedOrdersPaginatedWithTokenFilter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2710,
                      "src": "10654:40:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_array$_t_uint16_$dyn_memory_ptr_$_t_address_$_t_uint16_$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (uint16[] memory,address,uint16,uint256) view returns (bytes memory)"
                      }
                    },
                    "id": 2665,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10654:110:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 2659,
                  "id": 2666,
                  "nodeType": "Return",
                  "src": "10647:117:1"
                }
              ]
            },
            "documentation": "@dev View returning byte-encoded sell orders in paginated form. It has the same behavior as\nBatchExchange.getEncodedUsersPaginated but uses less memory and thus is more gas efficient.\n@param previousPageUser address of last user received in the previous page (address(0) for first page)\n@param previousPageUserOffset the number of orders received for the last user on the previous page (0 for first page).\n@param pageSize uint determining the count of orders to be returned per page\n@return encoded bytes representing a page of orders ordered by (user, index)",
            "id": 2668,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getEncodedOrdersPaginated",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2656,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2651,
                  "name": "previousPageUser",
                  "nodeType": "VariableDeclaration",
                  "scope": 2668,
                  "src": "10506:24:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2650,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10506:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2653,
                  "name": "previousPageUserOffset",
                  "nodeType": "VariableDeclaration",
                  "scope": 2668,
                  "src": "10540:29:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 2652,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "10540:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2655,
                  "name": "pageSize",
                  "nodeType": "VariableDeclaration",
                  "scope": 2668,
                  "src": "10579:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2654,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10579:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10496:105:1"
            },
            "returnParameters": {
              "id": 2659,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2658,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2668,
                  "src": "10623:12:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2657,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "10623:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10622:14:1"
            },
            "scope": 3517,
            "src": "10462:309:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2709,
              "nodeType": "Block",
              "src": "11004:370:1",
              "statements": [
                {
                  "assignments": [
                    2683
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2683,
                      "name": "elements",
                      "nodeType": "VariableDeclaration",
                      "scope": 2709,
                      "src": "11014:21:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 2682,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "11014:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2690,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2688,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2686,
                          "name": "pageSize",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2677,
                          "src": "11048:8:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "*",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2687,
                          "name": "AUCTION_ELEMENT_WIDTH",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2241,
                          "src": "11059:21:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "src": "11048:32:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2685,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "11038:9:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$",
                        "typeString": "function (uint256) pure returns (bytes memory)"
                      },
                      "typeName": {
                        "id": 2684,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "11042:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      }
                    },
                    "id": 2689,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11038:43:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11014:67:1"
                },
                {
                  "assignments": [
                    2692
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2692,
                      "name": "orderCount",
                      "nodeType": "VariableDeclaration",
                      "scope": 2709,
                      "src": "11091:18:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2691,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11091:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2699,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2694,
                        "name": "tokenFilter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2671,
                        "src": "11168:11:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                          "typeString": "uint16[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2695,
                        "name": "previousPageUser",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2673,
                        "src": "11193:16:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2696,
                        "name": "previousPageUserOffset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2675,
                        "src": "11223:22:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2697,
                        "name": "elements",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2683,
                        "src": "11259:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                          "typeString": "uint16[] memory"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 2693,
                      "name": "writeEncodedOrdersPaginatedWithTokenFilter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2839,
                      "src": "11112:42:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_array$_t_uint16_$dyn_memory_ptr_$_t_address_$_t_uint16_$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                        "typeString": "function (uint16[] memory,address,uint16,bytes memory) view returns (uint256)"
                      }
                    },
                    "id": 2698,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11112:165:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11091:186:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2701,
                        "name": "elements",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2683,
                        "src": "11297:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2704,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2702,
                          "name": "orderCount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2692,
                          "src": "11307:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "*",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2703,
                          "name": "AUCTION_ELEMENT_WIDTH",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2241,
                          "src": "11320:21:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "src": "11307:34:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2700,
                      "name": "setLength",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3369,
                      "src": "11287:9:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes memory,uint256) pure"
                      }
                    },
                    "id": 2705,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11287:55:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2706,
                  "nodeType": "ExpressionStatement",
                  "src": "11287:55:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2707,
                    "name": "elements",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2683,
                    "src": "11359:8:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 2681,
                  "id": 2708,
                  "nodeType": "Return",
                  "src": "11352:15:1"
                }
              ]
            },
            "documentation": null,
            "id": 2710,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getEncodedOrdersPaginatedWithTokenFilter",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2678,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2671,
                  "name": "tokenFilter",
                  "nodeType": "VariableDeclaration",
                  "scope": 2710,
                  "src": "10836:27:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                    "typeString": "uint16[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2669,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "10836:6:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 2670,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "10836:8:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$dyn_storage_ptr",
                      "typeString": "uint16[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2673,
                  "name": "previousPageUser",
                  "nodeType": "VariableDeclaration",
                  "scope": 2710,
                  "src": "10873:24:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2672,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10873:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2675,
                  "name": "previousPageUserOffset",
                  "nodeType": "VariableDeclaration",
                  "scope": 2710,
                  "src": "10907:29:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 2674,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "10907:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2677,
                  "name": "pageSize",
                  "nodeType": "VariableDeclaration",
                  "scope": 2710,
                  "src": "10946:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2676,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10946:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10826:142:1"
            },
            "returnParameters": {
              "id": 2681,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2680,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2710,
                  "src": "10990:12:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2679,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "10990:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10989:14:1"
            },
            "scope": 3517,
            "src": "10777:597:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2838,
              "nodeType": "Block",
              "src": "11609:1495:1",
              "statements": [
                {
                  "assignments": [
                    2725
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2725,
                      "name": "pageSize",
                      "nodeType": "VariableDeclaration",
                      "scope": 2838,
                      "src": "11619:16:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2724,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11619:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2730,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2729,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2726,
                        "name": "elements",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2719,
                        "src": "11638:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 2727,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "11638:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2728,
                      "name": "AUCTION_ELEMENT_WIDTH",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2241,
                      "src": "11656:21:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "11638:39:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11619:58:1"
                },
                {
                  "assignments": [
                    2732
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2732,
                      "name": "users",
                      "nodeType": "VariableDeclaration",
                      "scope": 2838,
                      "src": "11687:18:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 2731,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "11687:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2740,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2735,
                        "name": "previousPageUser",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2715,
                        "src": "11740:16:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2737,
                            "name": "pageSize",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2725,
                            "src": "11765:8:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 2736,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "11758:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint16_$",
                            "typeString": "type(uint16)"
                          },
                          "typeName": "uint16"
                        },
                        "id": 2738,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11758:16:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2733,
                        "name": "batchExchange",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2257,
                        "src": "11708:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_BatchExchange_$2226",
                          "typeString": "contract BatchExchange"
                        }
                      },
                      "id": 2734,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getUsersPaginated",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1065,
                      "src": "11708:31:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$_t_uint16_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (address,uint16) view external returns (bytes memory)"
                      }
                    },
                    "id": 2739,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11708:67:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11687:88:1"
                },
                {
                  "assignments": [
                    2742
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2742,
                      "name": "currentOffset",
                      "nodeType": "VariableDeclaration",
                      "scope": 2838,
                      "src": "11785:20:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 2741,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "11785:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2744,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 2743,
                    "name": "previousPageUserOffset",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2717,
                    "src": "11808:22:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11785:45:1"
                },
                {
                  "assignments": [
                    2746
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2746,
                      "name": "currentUser",
                      "nodeType": "VariableDeclaration",
                      "scope": 2838,
                      "src": "11840:19:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2745,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "11840:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2748,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 2747,
                    "name": "previousPageUser",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2715,
                    "src": "11862:16:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11840:38:1"
                },
                {
                  "assignments": [
                    2750
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2750,
                      "name": "orderIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 2838,
                      "src": "11888:18:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2749,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11888:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2752,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 2751,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "11909:1:1",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11888:22:1"
                },
                {
                  "assignments": [
                    2754
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2754,
                      "name": "userIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 2838,
                      "src": "11920:17:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2753,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11920:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2756,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 2755,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "11940:1:1",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11920:21:1"
                },
                {
                  "body": {
                    "id": 2834,
                    "nodeType": "Block",
                    "src": "11981:1090:1",
                    "statements": [
                      {
                        "assignments": [
                          2761,
                          2763
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2761,
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "scope": 2834,
                            "src": "12301:12:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 2760,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "12301:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 2763,
                            "name": "order",
                            "nodeType": "VariableDeclaration",
                            "scope": 2834,
                            "src": "12315:18:1",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 2762,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "12315:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2778,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "6f726465727328616464726573732c75696e7432353629",
                                  "id": 2773,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12422:25:1",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_793b8c6dae53b1dfde0a75c3de6c1c6dd9f4122c71d17362e684c126340feea5",
                                    "typeString": "literal_string \"orders(address,uint256)\""
                                  },
                                  "value": "orders(address,uint256)"
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 2774,
                                  "name": "currentUser",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2746,
                                  "src": "12449:11:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 2775,
                                  "name": "currentOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2742,
                                  "src": "12462:13:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_793b8c6dae53b1dfde0a75c3de6c1c6dd9f4122c71d17362e684c126340feea5",
                                    "typeString": "literal_string \"orders(address,uint256)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2771,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10229,
                                  "src": "12398:3:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 2772,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "12398:23:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 2776,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12398:78:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "35303030",
                                "id": 2769,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12375:4:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_5000_by_1",
                                  "typeString": "int_const 5000"
                                },
                                "value": "5000"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_5000_by_1",
                                  "typeString": "int_const 5000"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2765,
                                      "name": "batchExchange",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2257,
                                      "src": "12345:13:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_BatchExchange_$2226",
                                        "typeString": "contract BatchExchange"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_BatchExchange_$2226",
                                        "typeString": "contract BatchExchange"
                                      }
                                    ],
                                    "id": 2764,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "12337:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 2766,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12337:22:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 2767,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "staticcall",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "12337:33:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                                }
                              },
                              "id": 2768,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "gas",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "12337:37:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_setgas_pure$_t_uint256_$returns$_t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$gas_$",
                                "typeString": "function (uint256) pure returns (function (bytes memory) view returns (bool,bytes memory))"
                              }
                            },
                            "id": 2770,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12337:43:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$gas",
                              "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 2777,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12337:153:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12300:190:1"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 2779,
                          "name": "success",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2761,
                          "src": "12508:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 2832,
                          "nodeType": "Block",
                          "src": "12724:337:1",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2801,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 2799,
                                  "name": "currentOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2742,
                                  "src": "12742:13:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2800,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12758:1:1",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "12742:17:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "id": 2802,
                              "nodeType": "ExpressionStatement",
                              "src": "12742:17:1"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2811,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2803,
                                    "name": "users",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2732,
                                    "src": "12781:5:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 2804,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "12781:12:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2810,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 2807,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 2805,
                                          "name": "userIndex",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2754,
                                          "src": "12798:9:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 2806,
                                          "name": "ADDRESS_WIDTH",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2249,
                                          "src": "12810:13:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "src": "12798:25:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 2808,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "12797:27:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 2809,
                                    "name": "ADDRESS_WIDTH",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2249,
                                    "src": "12827:13:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "src": "12797:43:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "12781:59:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 2830,
                                "nodeType": "Block",
                                "src": "13001:46:1",
                                "statements": [
                                  {
                                    "id": 2829,
                                    "nodeType": "Break",
                                    "src": "13023:5:1"
                                  }
                                ]
                              },
                              "id": 2831,
                              "nodeType": "IfStatement",
                              "src": "12777:270:1",
                              "trueBody": {
                                "id": 2828,
                                "nodeType": "Block",
                                "src": "12842:153:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2822,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 2812,
                                        "name": "currentUser",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2746,
                                        "src": "12864:11:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 2818,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "argumentTypes": null,
                                                  "id": 2816,
                                                  "name": "userIndex",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 2754,
                                                  "src": "12898:9:1",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "*",
                                                "rightExpression": {
                                                  "argumentTypes": null,
                                                  "id": 2817,
                                                  "name": "ADDRESS_WIDTH",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 2249,
                                                  "src": "12910:13:1",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                  }
                                                },
                                                "src": "12898:25:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "id": 2819,
                                                "name": "ADDRESS_WIDTH",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2249,
                                                "src": "12925:13:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint8",
                                                  "typeString": "uint8"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint8",
                                                  "typeString": "uint8"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 2814,
                                                "name": "users",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2732,
                                                "src": "12886:5:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              },
                                              "id": 2815,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "slice",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 9877,
                                              "src": "12886:11:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                                                "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                                              }
                                            },
                                            "id": 2820,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "12886:53:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          ],
                                          "id": 2813,
                                          "name": "getUser",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2928,
                                          "src": "12878:7:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$",
                                            "typeString": "function (bytes memory) pure returns (address)"
                                          }
                                        },
                                        "id": 2821,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "12878:62:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "12864:76:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "id": 2823,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12864:76:1"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2826,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 2824,
                                        "name": "userIndex",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2754,
                                        "src": "12962:9:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "+=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "hexValue": "31",
                                        "id": 2825,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "12975:1:1",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "12962:14:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2827,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12962:14:1"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "id": 2833,
                        "nodeType": "IfStatement",
                        "src": "12504:557:1",
                        "trueBody": {
                          "id": 2798,
                          "nodeType": "Block",
                          "src": "12517:201:1",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2782,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 2780,
                                  "name": "currentOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2742,
                                  "src": "12535:13:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 2781,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12552:1:1",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "12535:18:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "id": 2783,
                              "nodeType": "ExpressionStatement",
                              "src": "12535:18:1"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2785,
                                    "name": "tokenFilter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2713,
                                    "src": "12592:11:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                                      "typeString": "uint16[] memory"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2786,
                                    "name": "currentUser",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2746,
                                    "src": "12605:11:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2787,
                                    "name": "order",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2763,
                                    "src": "12618:5:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2788,
                                    "name": "elements",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2719,
                                    "src": "12625:8:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2791,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 2789,
                                      "name": "orderIndex",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2750,
                                      "src": "12635:10:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 2790,
                                      "name": "AUCTION_ELEMENT_WIDTH",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2241,
                                      "src": "12648:21:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "src": "12635:34:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                                      "typeString": "uint16[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 2784,
                                  "name": "encodeAuctionElement",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3516,
                                  "src": "12571:20:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_array$_t_uint16_$dyn_memory_ptr_$_t_address_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint16[] memory,address,bytes memory,bytes memory,uint256) view"
                                  }
                                },
                                "id": 2792,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12571:99:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2793,
                              "nodeType": "ExpressionStatement",
                              "src": "12571:99:1"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2796,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 2794,
                                  "name": "orderIndex",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2750,
                                  "src": "12688:10:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 2795,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12702:1:1",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "12688:15:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2797,
                              "nodeType": "ExpressionStatement",
                              "src": "12688:15:1"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2759,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2757,
                      "name": "orderIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2750,
                      "src": "11958:10:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2758,
                      "name": "pageSize",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2725,
                      "src": "11971:8:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11958:21:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2835,
                  "nodeType": "WhileStatement",
                  "src": "11951:1120:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2836,
                    "name": "orderIndex",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2750,
                    "src": "13087:10:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2723,
                  "id": 2837,
                  "nodeType": "Return",
                  "src": "13080:17:1"
                }
              ]
            },
            "documentation": null,
            "id": 2839,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "writeEncodedOrdersPaginatedWithTokenFilter",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2720,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2713,
                  "name": "tokenFilter",
                  "nodeType": "VariableDeclaration",
                  "scope": 2839,
                  "src": "11441:27:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                    "typeString": "uint16[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2711,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "11441:6:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 2712,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "11441:8:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$dyn_storage_ptr",
                      "typeString": "uint16[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2715,
                  "name": "previousPageUser",
                  "nodeType": "VariableDeclaration",
                  "scope": 2839,
                  "src": "11478:24:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2714,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11478:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2717,
                  "name": "previousPageUserOffset",
                  "nodeType": "VariableDeclaration",
                  "scope": 2839,
                  "src": "11512:29:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 2716,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "11512:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2719,
                  "name": "elements",
                  "nodeType": "VariableDeclaration",
                  "scope": 2839,
                  "src": "11551:21:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2718,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "11551:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11431:147:1"
            },
            "returnParameters": {
              "id": 2723,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2722,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2839,
                  "src": "11600:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2721,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11600:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11599:9:1"
            },
            "scope": 3517,
            "src": "11380:1724:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2906,
              "nodeType": "Block",
              "src": "13254:522:1",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2854,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2851,
                        "name": "filter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2846,
                        "src": "13326:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                          "typeString": "uint16[] memory"
                        }
                      },
                      "id": 2852,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "13326:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2853,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "13343:1:1",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "13326:18:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2858,
                  "nodeType": "IfStatement",
                  "src": "13322:60:1",
                  "trueBody": {
                    "id": 2857,
                    "nodeType": "Block",
                    "src": "13346:36:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 2855,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "13367:4:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 2850,
                        "id": 2856,
                        "nodeType": "Return",
                        "src": "13360:11:1"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    2860,
                    2862
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2860,
                      "name": "foundBuyToken",
                      "nodeType": "VariableDeclaration",
                      "scope": 2906,
                      "src": "13392:18:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 2859,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "13392:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2862,
                      "name": "foundSellToken",
                      "nodeType": "VariableDeclaration",
                      "scope": 2906,
                      "src": "13412:19:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 2861,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "13412:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2866,
                  "initialValue": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 2863,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "13436:5:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 2864,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "13443:5:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      }
                    ],
                    "id": 2865,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "13435:14:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bool_$",
                      "typeString": "tuple(bool,bool)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13391:58:1"
                },
                {
                  "body": {
                    "id": 2900,
                    "nodeType": "Block",
                    "src": "13515:207:1",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          },
                          "id": 2882,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2878,
                              "name": "filter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2846,
                              "src": "13533:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                                "typeString": "uint16[] memory"
                              }
                            },
                            "id": 2880,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2879,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2868,
                              "src": "13540:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "13533:13:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2881,
                            "name": "buyToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2841,
                            "src": "13550:8:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "src": "13533:25:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2888,
                        "nodeType": "IfStatement",
                        "src": "13529:84:1",
                        "trueBody": {
                          "id": 2887,
                          "nodeType": "Block",
                          "src": "13560:53:1",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2885,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 2883,
                                  "name": "foundBuyToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2860,
                                  "src": "13578:13:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "74727565",
                                  "id": 2884,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13594:4:1",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                },
                                "src": "13578:20:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 2886,
                              "nodeType": "ExpressionStatement",
                              "src": "13578:20:1"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          },
                          "id": 2893,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2889,
                              "name": "filter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2846,
                              "src": "13630:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                                "typeString": "uint16[] memory"
                              }
                            },
                            "id": 2891,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2890,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2868,
                              "src": "13637:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "13630:13:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2892,
                            "name": "sellToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2843,
                            "src": "13647:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "src": "13630:26:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2899,
                        "nodeType": "IfStatement",
                        "src": "13626:86:1",
                        "trueBody": {
                          "id": 2898,
                          "nodeType": "Block",
                          "src": "13658:54:1",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2896,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 2894,
                                  "name": "foundSellToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2862,
                                  "src": "13676:14:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "74727565",
                                  "id": 2895,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13693:4:1",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                },
                                "src": "13676:21:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 2897,
                              "nodeType": "ExpressionStatement",
                              "src": "13676:21:1"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2874,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2871,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2868,
                      "src": "13483:5:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2872,
                        "name": "filter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2846,
                        "src": "13491:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                          "typeString": "uint16[] memory"
                        }
                      },
                      "id": 2873,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "13491:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "13483:21:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2901,
                  "initializationExpression": {
                    "assignments": [
                      2868
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2868,
                        "name": "index",
                        "nodeType": "VariableDeclaration",
                        "scope": 2901,
                        "src": "13464:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2867,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13464:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 2870,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2869,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "13480:1:1",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "13464:17:1"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2876,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "13506:7:1",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 2875,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2868,
                        "src": "13506:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2877,
                    "nodeType": "ExpressionStatement",
                    "src": "13506:7:1"
                  },
                  "nodeType": "ForStatement",
                  "src": "13459:263:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 2904,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2902,
                      "name": "foundBuyToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2860,
                      "src": "13738:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2903,
                      "name": "foundSellToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2862,
                      "src": "13755:14:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "13738:31:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 2850,
                  "id": 2905,
                  "nodeType": "Return",
                  "src": "13731:38:1"
                }
              ]
            },
            "documentation": null,
            "id": 2907,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "matchesTokenFilter",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2847,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2841,
                  "name": "buyToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 2907,
                  "src": "13147:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 2840,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "13147:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2843,
                  "name": "sellToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 2907,
                  "src": "13172:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 2842,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "13172:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2846,
                  "name": "filter",
                  "nodeType": "VariableDeclaration",
                  "scope": 2907,
                  "src": "13198:22:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                    "typeString": "uint16[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2844,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "13198:6:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 2845,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "13198:8:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$dyn_storage_ptr",
                      "typeString": "uint16[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13137:89:1"
            },
            "returnParameters": {
              "id": 2850,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2849,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2907,
                  "src": "13248:4:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2848,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "13248:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13247:6:1"
            },
            "scope": 3517,
            "src": "13110:666:1",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2927,
              "nodeType": "Block",
              "src": "13851:104:1",
              "statements": [
                {
                  "assignments": [
                    2915
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2915,
                      "name": "slice",
                      "nodeType": "VariableDeclaration",
                      "scope": 2927,
                      "src": "13861:18:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 2914,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "13861:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2921,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2918,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "13896:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "id": 2919,
                        "name": "ADDRESS_WIDTH",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2249,
                        "src": "13899:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2916,
                        "name": "element",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2909,
                        "src": "13882:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 2917,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "slice",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9877,
                      "src": "13882:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                      }
                    },
                    "id": 2920,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13882:31:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13861:52:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2924,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "13946:1:1",
                        "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"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2922,
                        "name": "slice",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2915,
                        "src": "13930:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 2923,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "toAddress",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9912,
                      "src": "13930:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256) pure returns (address)"
                      }
                    },
                    "id": 2925,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13930:18:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 2913,
                  "id": 2926,
                  "nodeType": "Return",
                  "src": "13923:25:1"
                }
              ]
            },
            "documentation": null,
            "id": 2928,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getUser",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2910,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2909,
                  "name": "element",
                  "nodeType": "VariableDeclaration",
                  "scope": 2928,
                  "src": "13799:20:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2908,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "13799:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13798:22:1"
            },
            "returnParameters": {
              "id": 2913,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2912,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2928,
                  "src": "13842:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2911,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13842:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13841:9:1"
            },
            "scope": 3517,
            "src": "13782:173:1",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2948,
              "nodeType": "Block",
              "src": "14042:105:1",
              "statements": [
                {
                  "assignments": [
                    2936
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2936,
                      "name": "slice",
                      "nodeType": "VariableDeclaration",
                      "scope": 2948,
                      "src": "14052:18:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 2935,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "14052:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2942,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2939,
                        "name": "ADDRESS_WIDTH",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2249,
                        "src": "14087:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "3532",
                        "id": 2940,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14102:2:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_52_by_1",
                          "typeString": "int_const 52"
                        },
                        "value": "52"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_rational_52_by_1",
                          "typeString": "int_const 52"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2937,
                        "name": "element",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2930,
                        "src": "14073:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 2938,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "slice",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9877,
                      "src": "14073:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                      }
                    },
                    "id": 2941,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14073:32:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14052:53:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2945,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14138:1:1",
                        "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"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2943,
                        "name": "slice",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2936,
                        "src": "14122:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 2944,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "toUint256",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10157,
                      "src": "14122:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 2946,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14122:18:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2934,
                  "id": 2947,
                  "nodeType": "Return",
                  "src": "14115:25:1"
                }
              ]
            },
            "documentation": null,
            "id": 2949,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getSellTokenBalance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2931,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2930,
                  "name": "element",
                  "nodeType": "VariableDeclaration",
                  "scope": 2949,
                  "src": "13990:20:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2929,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "13990:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13989:22:1"
            },
            "returnParameters": {
              "id": 2934,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2933,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2949,
                  "src": "14033:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2932,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "14033:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14032:9:1"
            },
            "scope": 3517,
            "src": "13961:186:1",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2979,
              "nodeType": "Block",
              "src": "14258:184:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "3532",
                            "id": 2972,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14390:2:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_52_by_1",
                              "typeString": "int_const 52"
                            },
                            "value": "52"
                          },
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "id": 2975,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2973,
                              "name": "AUCTION_ELEMENT_WIDTH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2241,
                              "src": "14394:21:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "3532",
                              "id": 2974,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14418:2:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_52_by_1",
                                "typeString": "int_const 52"
                              },
                              "value": "52"
                            },
                            "src": "14394:26:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_52_by_1",
                              "typeString": "int_const 52"
                            },
                            {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2970,
                            "name": "element",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2951,
                            "src": "14376:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 2971,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "slice",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9877,
                          "src": "14376:13:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                          }
                        },
                        "id": 2976,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14376:45:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2966,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2953,
                                "src": "14343:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 2964,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10229,
                                "src": "14326:3:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 2965,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodePacked",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "14326:16:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 2967,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14326:24:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2960,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "14301:1:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "argumentTypes": null,
                                "id": 2961,
                                "name": "ADDRESS_WIDTH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2249,
                                "src": "14304:13:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 2958,
                                "name": "element",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2951,
                                "src": "14287:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 2959,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "slice",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9877,
                              "src": "14287:13:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                              }
                            },
                            "id": 2962,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14287:31:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 2963,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "concat",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9822,
                          "src": "14287:38:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory,bytes memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 2968,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14287:64:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 2969,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "concat",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9822,
                      "src": "14287:71:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,bytes memory) pure returns (bytes memory)"
                      }
                    },
                    "id": 2977,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14287:148:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 2957,
                  "id": 2978,
                  "nodeType": "Return",
                  "src": "14268:167:1"
                }
              ]
            },
            "documentation": null,
            "id": 2980,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "updateSellTokenBalance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2954,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2951,
                  "name": "element",
                  "nodeType": "VariableDeclaration",
                  "scope": 2980,
                  "src": "14185:20:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2950,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "14185:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2953,
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 2980,
                  "src": "14207:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2952,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "14207:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14184:38:1"
            },
            "returnParameters": {
              "id": 2957,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2956,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2980,
                  "src": "14244:12:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2955,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "14244:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14243:14:1"
            },
            "scope": 3517,
            "src": "14153:289:1",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3000,
              "nodeType": "Block",
              "src": "14520:92:1",
              "statements": [
                {
                  "assignments": [
                    2988
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2988,
                      "name": "slice",
                      "nodeType": "VariableDeclaration",
                      "scope": 3000,
                      "src": "14530:18:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 2987,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "14530:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2994,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "3532",
                        "id": 2991,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14565:2:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_52_by_1",
                          "typeString": "int_const 52"
                        },
                        "value": "52"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 2992,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14569:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_52_by_1",
                          "typeString": "int_const 52"
                        },
                        {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2989,
                        "name": "element",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2982,
                        "src": "14551:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 2990,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "slice",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9877,
                      "src": "14551:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                      }
                    },
                    "id": 2993,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14551:20:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14530:41:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2997,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14603:1:1",
                        "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"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2995,
                        "name": "slice",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2988,
                        "src": "14588:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 2996,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "toUint16",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9982,
                      "src": "14588:14:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint16_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256) pure returns (uint16)"
                      }
                    },
                    "id": 2998,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14588:17:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "functionReturnParameters": 2986,
                  "id": 2999,
                  "nodeType": "Return",
                  "src": "14581:24:1"
                }
              ]
            },
            "documentation": null,
            "id": 3001,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getBuyToken",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2983,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2982,
                  "name": "element",
                  "nodeType": "VariableDeclaration",
                  "scope": 3001,
                  "src": "14469:20:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2981,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "14469:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14468:22:1"
            },
            "returnParameters": {
              "id": 2986,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2985,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3001,
                  "src": "14512:6:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 2984,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "14512:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14511:8:1"
            },
            "scope": 3517,
            "src": "14448:164:1",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3021,
              "nodeType": "Block",
              "src": "14691:92:1",
              "statements": [
                {
                  "assignments": [
                    3009
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3009,
                      "name": "slice",
                      "nodeType": "VariableDeclaration",
                      "scope": 3021,
                      "src": "14701:18:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 3008,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "14701:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3015,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "3534",
                        "id": 3012,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14736:2:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_54_by_1",
                          "typeString": "int_const 54"
                        },
                        "value": "54"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 3013,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14740:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_54_by_1",
                          "typeString": "int_const 54"
                        },
                        {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3010,
                        "name": "element",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3003,
                        "src": "14722:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 3011,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "slice",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9877,
                      "src": "14722:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                      }
                    },
                    "id": 3014,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14722:20:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14701:41:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 3018,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14774:1:1",
                        "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"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3016,
                        "name": "slice",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3009,
                        "src": "14759:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 3017,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "toUint16",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9982,
                      "src": "14759:14:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint16_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256) pure returns (uint16)"
                      }
                    },
                    "id": 3019,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14759:17:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "functionReturnParameters": 3007,
                  "id": 3020,
                  "nodeType": "Return",
                  "src": "14752:24:1"
                }
              ]
            },
            "documentation": null,
            "id": 3022,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getSellToken",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3004,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3003,
                  "name": "element",
                  "nodeType": "VariableDeclaration",
                  "scope": 3022,
                  "src": "14640:20:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3002,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "14640:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14639:22:1"
            },
            "returnParameters": {
              "id": 3007,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3006,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3022,
                  "src": "14683:6:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 3005,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "14683:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14682:8:1"
            },
            "scope": 3517,
            "src": "14618:165:1",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3042,
              "nodeType": "Block",
              "src": "14862:92:1",
              "statements": [
                {
                  "assignments": [
                    3030
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3030,
                      "name": "slice",
                      "nodeType": "VariableDeclaration",
                      "scope": 3042,
                      "src": "14872:18:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 3029,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "14872:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3036,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "3536",
                        "id": 3033,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14907:2:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_56_by_1",
                          "typeString": "int_const 56"
                        },
                        "value": "56"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "34",
                        "id": 3034,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14911:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        },
                        "value": "4"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_56_by_1",
                          "typeString": "int_const 56"
                        },
                        {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3031,
                        "name": "element",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3024,
                        "src": "14893:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 3032,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "slice",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9877,
                      "src": "14893:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                      }
                    },
                    "id": 3035,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14893:20:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14872:41:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 3039,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14945:1:1",
                        "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"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3037,
                        "name": "slice",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3030,
                        "src": "14930:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 3038,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "toUint32",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10017,
                      "src": "14930:14:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint32_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256) pure returns (uint32)"
                      }
                    },
                    "id": 3040,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14930:17:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "functionReturnParameters": 3028,
                  "id": 3041,
                  "nodeType": "Return",
                  "src": "14923:24:1"
                }
              ]
            },
            "documentation": null,
            "id": 3043,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getValidFrom",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3025,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3024,
                  "name": "element",
                  "nodeType": "VariableDeclaration",
                  "scope": 3043,
                  "src": "14811:20:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3023,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "14811:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14810:22:1"
            },
            "returnParameters": {
              "id": 3028,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3027,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3043,
                  "src": "14854:6:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 3026,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "14854:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14853:8:1"
            },
            "scope": 3517,
            "src": "14789:165:1",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3063,
              "nodeType": "Block",
              "src": "15034:92:1",
              "statements": [
                {
                  "assignments": [
                    3051
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3051,
                      "name": "slice",
                      "nodeType": "VariableDeclaration",
                      "scope": 3063,
                      "src": "15044:18:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 3050,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "15044:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3057,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "3630",
                        "id": 3054,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15079:2:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_60_by_1",
                          "typeString": "int_const 60"
                        },
                        "value": "60"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "34",
                        "id": 3055,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15083:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        },
                        "value": "4"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_60_by_1",
                          "typeString": "int_const 60"
                        },
                        {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3052,
                        "name": "element",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3045,
                        "src": "15065:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 3053,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "slice",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9877,
                      "src": "15065:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                      }
                    },
                    "id": 3056,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15065:20:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15044:41:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 3060,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15117:1:1",
                        "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"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3058,
                        "name": "slice",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3051,
                        "src": "15102:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 3059,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "toUint32",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10017,
                      "src": "15102:14:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint32_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256) pure returns (uint32)"
                      }
                    },
                    "id": 3061,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15102:17:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "functionReturnParameters": 3049,
                  "id": 3062,
                  "nodeType": "Return",
                  "src": "15095:24:1"
                }
              ]
            },
            "documentation": null,
            "id": 3064,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getValidUntil",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3046,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3045,
                  "name": "element",
                  "nodeType": "VariableDeclaration",
                  "scope": 3064,
                  "src": "14983:20:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3044,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "14983:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14982:22:1"
            },
            "returnParameters": {
              "id": 3049,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3048,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3064,
                  "src": "15026:6:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 3047,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "15026:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15025:8:1"
            },
            "scope": 3517,
            "src": "14960:166:1",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3110,
              "nodeType": "Block",
              "src": "15230:252:1",
              "statements": [
                {
                  "assignments": [
                    3076
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3076,
                      "name": "result",
                      "nodeType": "VariableDeclaration",
                      "scope": 3110,
                      "src": "15240:22:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                        "typeString": "uint16[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3074,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "15240:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "id": 3075,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "15240:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint16_$dyn_storage_ptr",
                          "typeString": "uint16[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3083,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3080,
                          "name": "tokenIds",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3067,
                          "src": "15278:8:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 3081,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "15278:15:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3079,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "15265:12:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint16_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (uint16[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3077,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "15269:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "id": 3078,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "15269:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint16_$dyn_storage_ptr",
                          "typeString": "uint16[]"
                        }
                      }
                    },
                    "id": 3082,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15265:29:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$dyn_memory",
                      "typeString": "uint16[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15240:54:1"
                },
                {
                  "body": {
                    "id": 3106,
                    "nodeType": "Block",
                    "src": "15362:91:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3104,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3095,
                              "name": "result",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3076,
                              "src": "15376:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                                "typeString": "uint16[] memory"
                              }
                            },
                            "id": 3097,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3096,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3085,
                              "src": "15383:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "15376:13:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 3100,
                                  "name": "tokenIds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3067,
                                  "src": "15426:8:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 3102,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 3101,
                                  "name": "index",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3085,
                                  "src": "15435:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "15426:15:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 3098,
                                "name": "batchExchange",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2257,
                                "src": "15392:13:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_BatchExchange_$2226",
                                  "typeString": "contract BatchExchange"
                                }
                              },
                              "id": 3099,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "tokenAddressToIdMap",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 893,
                              "src": "15392:33:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint16_$",
                                "typeString": "function (address) view external returns (uint16)"
                              }
                            },
                            "id": 3103,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15392:50:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "src": "15376:66:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "id": 3105,
                        "nodeType": "ExpressionStatement",
                        "src": "15376:66:1"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3091,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3088,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3085,
                      "src": "15328:5:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3089,
                        "name": "tokenIds",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3067,
                        "src": "15336:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 3090,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "15336:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "15328:23:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3107,
                  "initializationExpression": {
                    "assignments": [
                      3085
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3085,
                        "name": "index",
                        "nodeType": "VariableDeclaration",
                        "scope": 3107,
                        "src": "15309:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3084,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15309:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 3087,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3086,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "15325:1:1",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "15309:17:1"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3093,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "15353:7:1",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 3092,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3085,
                        "src": "15353:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3094,
                    "nodeType": "ExpressionStatement",
                    "src": "15353:7:1"
                  },
                  "nodeType": "ForStatement",
                  "src": "15304:149:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3108,
                    "name": "result",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3076,
                    "src": "15469:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                      "typeString": "uint16[] memory"
                    }
                  },
                  "functionReturnParameters": 3072,
                  "id": 3109,
                  "nodeType": "Return",
                  "src": "15462:13:1"
                }
              ]
            },
            "documentation": null,
            "id": 3111,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getTokenIdsFromAdresses",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3068,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3067,
                  "name": "tokenIds",
                  "nodeType": "VariableDeclaration",
                  "scope": 3111,
                  "src": "15165:25:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3065,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "15165:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 3066,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "15165:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15164:27:1"
            },
            "returnParameters": {
              "id": 3072,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3071,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3111,
                  "src": "15213:15:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                    "typeString": "uint16[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3069,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "15213:6:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 3070,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "15213:8:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$dyn_storage_ptr",
                      "typeString": "uint16[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15212:17:1"
            },
            "scope": 3517,
            "src": "15132:350:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3210,
              "nodeType": "Block",
              "src": "15612:1134:1",
              "statements": [
                {
                  "assignments": [
                    3121
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3121,
                      "name": "user",
                      "nodeType": "VariableDeclaration",
                      "scope": 3210,
                      "src": "15622:12:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3120,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "15622:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3125,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3123,
                        "name": "element",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3113,
                        "src": "15645:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 3122,
                      "name": "getUser",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2928,
                      "src": "15637:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$",
                        "typeString": "function (bytes memory) pure returns (address)"
                      }
                    },
                    "id": 3124,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15637:16:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15622:31:1"
                },
                {
                  "assignments": [
                    3127
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3127,
                      "name": "sellToken",
                      "nodeType": "VariableDeclaration",
                      "scope": 3210,
                      "src": "15663:16:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 3126,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "15663:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3131,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3129,
                        "name": "element",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3113,
                        "src": "15695:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 3128,
                      "name": "getSellToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3022,
                      "src": "15682:12:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint16_$",
                        "typeString": "function (bytes memory) pure returns (uint16)"
                      }
                    },
                    "id": 3130,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15682:21:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15663:40:1"
                },
                {
                  "assignments": [
                    3133
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3133,
                      "name": "sellTokenAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 3210,
                      "src": "15713:24:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3132,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "15713:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3138,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3136,
                        "name": "sellToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3127,
                        "src": "15774:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3134,
                        "name": "batchExchange",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2257,
                        "src": "15740:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_BatchExchange_$2226",
                          "typeString": "contract BatchExchange"
                        }
                      },
                      "id": 3135,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "tokenIdToAddressMap",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 907,
                      "src": "15740:33:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_uint16_$returns$_t_address_$",
                        "typeString": "function (uint16) view external returns (address)"
                      }
                    },
                    "id": 3137,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15740:44:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15713:71:1"
                },
                {
                  "assignments": [
                    3140
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3140,
                      "name": "sellTokenBalance",
                      "nodeType": "VariableDeclaration",
                      "scope": 3210,
                      "src": "15794:24:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3139,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "15794:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3144,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3142,
                        "name": "element",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3113,
                        "src": "15841:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 3141,
                      "name": "getSellTokenBalance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2949,
                      "src": "15821:19:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                        "typeString": "function (bytes memory) pure returns (uint256)"
                      }
                    },
                    "id": 3143,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15821:28:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15794:55:1"
                },
                {
                  "assignments": [
                    3146,
                    3148
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3146,
                      "name": "depositAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 3210,
                      "src": "15860:21:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3145,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "15860:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3148,
                      "name": "depositBatch",
                      "nodeType": "VariableDeclaration",
                      "scope": 3210,
                      "src": "15883:19:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 3147,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "15883:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3154,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3151,
                        "name": "user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3121,
                        "src": "15938:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3152,
                        "name": "sellTokenAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3133,
                        "src": "15944:16:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3149,
                        "name": "batchExchange",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2257,
                        "src": "15906:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_BatchExchange_$2226",
                          "typeString": "contract BatchExchange"
                        }
                      },
                      "id": 3150,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getPendingDeposit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3849,
                      "src": "15906:31:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$_t_uint32_$",
                        "typeString": "function (address,address) view external returns (uint256,uint32)"
                      }
                    },
                    "id": 3153,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15906:55:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint32_$",
                      "typeString": "tuple(uint256,uint32)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15859:102:1"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 3163,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "id": 3159,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 3155,
                        "name": "depositBatch",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3148,
                        "src": "16076:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3156,
                            "name": "batchExchange",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2257,
                            "src": "16092:13:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_BatchExchange_$2226",
                              "typeString": "contract BatchExchange"
                            }
                          },
                          "id": 3157,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getCurrentBatchId",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3888,
                          "src": "16092:31:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_uint32_$",
                            "typeString": "function () view external returns (uint32)"
                          }
                        },
                        "id": 3158,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16092:33:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "src": "16076:49:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "id": 3162,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 3160,
                        "name": "depositBatch",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3148,
                        "src": "16129:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 3161,
                        "name": "targetBatchIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3115,
                        "src": "16144:16:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "src": "16129:31:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "16076:84:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3172,
                  "nodeType": "IfStatement",
                  "src": "16072:169:1",
                  "trueBody": {
                    "id": 3171,
                    "nodeType": "Block",
                    "src": "16162:79:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3169,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3164,
                            "name": "sellTokenBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3140,
                            "src": "16176:16:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3167,
                                "name": "depositAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3146,
                                "src": "16216:13:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 3165,
                                "name": "sellTokenBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3140,
                                "src": "16195:16:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3166,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 8563,
                              "src": "16195:20:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 3168,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16195:35:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16176:54:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3170,
                        "nodeType": "ExpressionStatement",
                        "src": "16176:54:1"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    3174,
                    3176
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3174,
                      "name": "withdrawAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 3210,
                      "src": "16251:22:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3173,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "16251:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3176,
                      "name": "withdrawBatch",
                      "nodeType": "VariableDeclaration",
                      "scope": 3210,
                      "src": "16275:20:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 3175,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "16275:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3182,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3179,
                        "name": "user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3121,
                        "src": "16332:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3180,
                        "name": "sellTokenAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3133,
                        "src": "16338:16:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3177,
                        "name": "batchExchange",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2257,
                        "src": "16299:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_BatchExchange_$2226",
                          "typeString": "contract BatchExchange"
                        }
                      },
                      "id": 3178,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getPendingWithdraw",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3876,
                      "src": "16299:32:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$_t_uint32_$",
                        "typeString": "function (address,address) view external returns (uint256,uint32)"
                      }
                    },
                    "id": 3181,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16299:56:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint32_$",
                      "typeString": "tuple(uint256,uint32)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16250:105:1"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 3191,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "id": 3187,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 3183,
                        "name": "withdrawBatch",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3176,
                        "src": "16478:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3184,
                            "name": "batchExchange",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2257,
                            "src": "16495:13:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_BatchExchange_$2226",
                              "typeString": "contract BatchExchange"
                            }
                          },
                          "id": 3185,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getCurrentBatchId",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3888,
                          "src": "16495:31:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_uint32_$",
                            "typeString": "function () view external returns (uint32)"
                          }
                        },
                        "id": 3186,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16495:33:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "src": "16478:50:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "id": 3190,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 3188,
                        "name": "withdrawBatch",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3176,
                        "src": "16532:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 3189,
                        "name": "targetBatchIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3115,
                        "src": "16548:16:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "src": "16532:32:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "16478:86:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3204,
                  "nodeType": "IfStatement",
                  "src": "16474:200:1",
                  "trueBody": {
                    "id": 3203,
                    "nodeType": "Block",
                    "src": "16566:108:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3201,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3192,
                            "name": "sellTokenBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3140,
                            "src": "16580:16:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3197,
                                    "name": "sellTokenBalance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3140,
                                    "src": "16629:16:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 3198,
                                    "name": "withdrawAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3174,
                                    "src": "16647:14:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3195,
                                    "name": "Math",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8536,
                                    "src": "16620:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_Math_$8536_$",
                                      "typeString": "type(library Math)"
                                    }
                                  },
                                  "id": 3196,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "min",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 8503,
                                  "src": "16620:8:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 3199,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16620:42:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 3193,
                                "name": "sellTokenBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3140,
                                "src": "16599:16:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3194,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 8579,
                              "src": "16599:20:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 3200,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16599:64:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16580:83:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3202,
                        "nodeType": "ExpressionStatement",
                        "src": "16580:83:1"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3206,
                        "name": "element",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3113,
                        "src": "16713:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3207,
                        "name": "sellTokenBalance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3140,
                        "src": "16722:16:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3205,
                      "name": "updateSellTokenBalance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2980,
                      "src": "16690:22:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256) pure returns (bytes memory)"
                      }
                    },
                    "id": 3208,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16690:49:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 3119,
                  "id": 3209,
                  "nodeType": "Return",
                  "src": "16683:56:1"
                }
              ]
            },
            "documentation": null,
            "id": 3211,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "updateSellTokenBalanceForBatchId",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3116,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3113,
                  "name": "element",
                  "nodeType": "VariableDeclaration",
                  "scope": 3211,
                  "src": "15530:20:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3112,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "15530:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3115,
                  "name": "targetBatchIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 3211,
                  "src": "15552:23:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 3114,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "15552:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15529:47:1"
            },
            "returnParameters": {
              "id": 3119,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3118,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3211,
                  "src": "15598:12:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3117,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "15598:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15597:14:1"
            },
            "scope": 3517,
            "src": "15488:1258:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3287,
              "nodeType": "Block",
              "src": "17363:725:1",
              "statements": [
                {
                  "assignments": [
                    3223
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3223,
                      "name": "tokenAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 3287,
                      "src": "17373:20:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3222,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "17373:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3228,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3226,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3213,
                        "src": "17430:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3224,
                        "name": "batchExchange",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2257,
                        "src": "17396:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_BatchExchange_$2226",
                          "typeString": "contract BatchExchange"
                        }
                      },
                      "id": 3225,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "tokenIdToAddressMap",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 907,
                      "src": "17396:33:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_uint16_$returns$_t_address_$",
                        "typeString": "function (uint16) view external returns (address)"
                      }
                    },
                    "id": 3227,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17396:42:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17373:65:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3231,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3229,
                      "name": "symbol",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3218,
                      "src": "17448:6:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "",
                      "id": 3230,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "string",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "17457:2:1",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                        "typeString": "literal_string \"\""
                      },
                      "value": ""
                    },
                    "src": "17448:11:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "id": 3232,
                  "nodeType": "ExpressionStatement",
                  "src": "17448:11:1"
                },
                {
                  "assignments": [
                    3234,
                    null
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3234,
                      "name": "hasStringSymbol",
                      "nodeType": "VariableDeclaration",
                      "scope": 3287,
                      "src": "17470:20:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 3233,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "17470:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    null
                  ],
                  "id": 3245,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "676574546f6b656e53796d626f6c537472696e67286164647265737329",
                            "id": 3241,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17558:31:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_b900dc02b8f4b27a7d992d05cae8b8c748f61310811f567fa784d843539df3ea",
                              "typeString": "literal_string \"getTokenSymbolString(address)\""
                            },
                            "value": "getTokenSymbolString(address)"
                          },
                          {
                            "argumentTypes": null,
                            "id": 3242,
                            "name": "tokenAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3223,
                            "src": "17591:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_b900dc02b8f4b27a7d992d05cae8b8c748f61310811f567fa784d843539df3ea",
                              "typeString": "literal_string \"getTokenSymbolString(address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3239,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10229,
                            "src": "17534:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 3240,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "17534:23:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 3243,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17534:70:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3236,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10298,
                            "src": "17504:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_BatchExchangeViewer_$3517",
                              "typeString": "contract BatchExchangeViewer"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_BatchExchangeViewer_$3517",
                              "typeString": "contract BatchExchangeViewer"
                            }
                          ],
                          "id": 3235,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "17496:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 3237,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17496:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 3238,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "staticcall",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17496:24:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                      }
                    },
                    "id": 3244,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17496:118:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bool,bytes memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17469:145:1"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 3246,
                    "name": "hasStringSymbol",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3234,
                    "src": "17628:15:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 3276,
                    "nodeType": "Block",
                    "src": "17719:284:1",
                    "statements": [
                      {
                        "assignments": [
                          3255,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3255,
                            "name": "hasBytesSymbol",
                            "nodeType": "VariableDeclaration",
                            "scope": 3276,
                            "src": "17734:19:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 3254,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "17734:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 3266,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "676574546f6b656e53796d626f6c4279746573286164647265737329",
                                  "id": 3262,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "17825:30:1",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_9101074c84c378e867d4e4d1ecd2b1aa7f48a8f6de005b31abc7b7f446558cae",
                                    "typeString": "literal_string \"getTokenSymbolBytes(address)\""
                                  },
                                  "value": "getTokenSymbolBytes(address)"
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3263,
                                  "name": "tokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3223,
                                  "src": "17857:12:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_9101074c84c378e867d4e4d1ecd2b1aa7f48a8f6de005b31abc7b7f446558cae",
                                    "typeString": "literal_string \"getTokenSymbolBytes(address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3260,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10229,
                                  "src": "17801:3:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 3261,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "17801:23:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 3264,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17801:69:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3257,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10298,
                                  "src": "17767:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_BatchExchangeViewer_$3517",
                                    "typeString": "contract BatchExchangeViewer"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_BatchExchangeViewer_$3517",
                                    "typeString": "contract BatchExchangeViewer"
                                  }
                                ],
                                "id": 3256,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "17759:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 3258,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17759:13:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 3259,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "17759:24:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 3265,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17759:125:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17733:151:1"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 3267,
                          "name": "hasBytesSymbol",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3255,
                          "src": "17902:14:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3275,
                        "nodeType": "IfStatement",
                        "src": "17898:95:1",
                        "trueBody": {
                          "id": 3274,
                          "nodeType": "Block",
                          "src": "17918:75:1",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3272,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 3268,
                                  "name": "symbol",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3218,
                                  "src": "17936:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 3270,
                                      "name": "tokenAddress",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3223,
                                      "src": "17965:12:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 3269,
                                    "name": "getTokenSymbolBytes",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3360,
                                    "src": "17945:19:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_string_memory_ptr_$",
                                      "typeString": "function (address) view returns (string memory)"
                                    }
                                  },
                                  "id": 3271,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "17945:33:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                "src": "17936:42:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              "id": 3273,
                              "nodeType": "ExpressionStatement",
                              "src": "17936:42:1"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 3277,
                  "nodeType": "IfStatement",
                  "src": "17624:379:1",
                  "trueBody": {
                    "id": 3253,
                    "nodeType": "Block",
                    "src": "17645:68:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3251,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3247,
                            "name": "symbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3218,
                            "src": "17659:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3249,
                                "name": "tokenAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3223,
                                "src": "17689:12:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 3248,
                              "name": "getTokenSymbolString",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3302,
                              "src": "17668:20:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_string_memory_ptr_$",
                                "typeString": "function (address) view returns (string memory)"
                              }
                            },
                            "id": 3250,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17668:34:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "17659:43:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "id": 3252,
                        "nodeType": "ExpressionStatement",
                        "src": "17659:43:1"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 3278,
                        "name": "tokenAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3223,
                        "src": "18020:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3279,
                        "name": "symbol",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3218,
                        "src": "18034:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3281,
                                "name": "tokenAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3223,
                                "src": "18056:12:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 3280,
                              "name": "ERC20Detailed",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9304,
                              "src": "18042:13:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ERC20Detailed_$9304_$",
                                "typeString": "type(contract ERC20Detailed)"
                              }
                            },
                            "id": 3282,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18042:27:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ERC20Detailed_$9304",
                              "typeString": "contract ERC20Detailed"
                            }
                          },
                          "id": 3283,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "decimals",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9303,
                          "src": "18042:36:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
                            "typeString": "function () view external returns (uint8)"
                          }
                        },
                        "id": 3284,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "18042:38:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      }
                    ],
                    "id": 3285,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "18019:62:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_address_$_t_string_memory_ptr_$_t_uint8_$",
                      "typeString": "tuple(address,string memory,uint8)"
                    }
                  },
                  "functionReturnParameters": 3221,
                  "id": 3286,
                  "nodeType": "Return",
                  "src": "18012:69:1"
                }
              ]
            },
            "documentation": "@dev Queries the token information for the given tokenId. Can handle symbols of type string and bytes (e.g. MKR).\nReturns \"Unknown\" as symbol value if it cannot be retrieved and reverts if decimals can not be fetched\n(to avoid ambiguity with a \"valid\" value).\n@param tokenId the ID of a token listed on BatchExchange\n@return the address, symbol and decimals of the token contract",
            "id": 3288,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getTokenInfo",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3214,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3213,
                  "name": "tokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3288,
                  "src": "17205:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 3212,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "17205:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "17204:16:1"
            },
            "returnParameters": {
              "id": 3221,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3216,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3288,
                  "src": "17279:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3215,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "17279:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3218,
                  "name": "symbol",
                  "nodeType": "VariableDeclaration",
                  "scope": 3288,
                  "src": "17300:20:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3217,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "17300:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3220,
                  "name": "decimals",
                  "nodeType": "VariableDeclaration",
                  "scope": 3288,
                  "src": "17334:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 3219,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "17334:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "17265:93:1"
            },
            "scope": 3517,
            "src": "17183:905:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3301,
              "nodeType": "Block",
              "src": "18471:53:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3296,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3290,
                            "src": "18502:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 3295,
                          "name": "ERC20Detailed",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9304,
                          "src": "18488:13:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ERC20Detailed_$9304_$",
                            "typeString": "type(contract ERC20Detailed)"
                          }
                        },
                        "id": 3297,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "18488:20:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC20Detailed_$9304",
                          "typeString": "contract ERC20Detailed"
                        }
                      },
                      "id": 3298,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "symbol",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9295,
                      "src": "18488:27:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_string_memory_ptr_$",
                        "typeString": "function () view external returns (string memory)"
                      }
                    },
                    "id": 3299,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18488:29:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 3294,
                  "id": 3300,
                  "nodeType": "Return",
                  "src": "18481:36:1"
                }
              ]
            },
            "documentation": "@dev returns the symbol() of the given address assuming it is returned as a string.\nReverts if method does not exist or returns data that is not a valid string.\n@param token the token address from which to receive the symbol\n@return the token's symbol",
            "id": 3302,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getTokenSymbolString",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3291,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3290,
                  "name": "token",
                  "nodeType": "VariableDeclaration",
                  "scope": 3302,
                  "src": "18420:13:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3289,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18420:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18419:15:1"
            },
            "returnParameters": {
              "id": 3294,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3293,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3302,
                  "src": "18456:13:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3292,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "18456:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18455:15:1"
            },
            "scope": 3517,
            "src": "18390:134:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3359,
              "nodeType": "Block",
              "src": "18973:441:1",
              "statements": [
                {
                  "assignments": [
                    3310,
                    3312
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3310,
                      "name": "success",
                      "nodeType": "VariableDeclaration",
                      "scope": 3359,
                      "src": "18984:12:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 3309,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "18984:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3312,
                      "name": "result",
                      "nodeType": "VariableDeclaration",
                      "scope": 3359,
                      "src": "18998:19:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 3311,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "18998:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3320,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "73796d626f6c2829",
                            "id": 3317,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19062:10:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_95d89b41e2f5f391a79ec54e9d87c79d6e777c63e32c28da95b4e9e4a79250ec",
                              "typeString": "literal_string \"symbol()\""
                            },
                            "value": "symbol()"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_95d89b41e2f5f391a79ec54e9d87c79d6e777c63e32c28da95b4e9e4a79250ec",
                              "typeString": "literal_string \"symbol()\""
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3315,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10229,
                            "src": "19038:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 3316,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "19038:23:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 3318,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19038:35:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3313,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3304,
                        "src": "19021:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 3314,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "staticcall",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19021:16:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                      }
                    },
                    "id": 3319,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19021:53:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bool,bytes memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18983:91:1"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 3322,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "19088:8:1",
                    "subExpression": {
                      "argumentTypes": null,
                      "id": 3321,
                      "name": "success",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3310,
                      "src": "19089:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3328,
                  "nodeType": "IfStatement",
                  "src": "19084:66:1",
                  "trueBody": {
                    "id": 3327,
                    "nodeType": "Block",
                    "src": "19098:52:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "43616e6e6f74206765742073796d626f6c",
                              "id": 3324,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "19119:19:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4b0ba4c998450aa6f43c5a2e6835d1879213d6d1cb07c4a8463b9f309be27399",
                                "typeString": "literal_string \"Cannot get symbol\""
                              },
                              "value": "Cannot get symbol"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_4b0ba4c998450aa6f43c5a2e6835d1879213d6d1cb07c4a8463b9f309be27399",
                                "typeString": "literal_string \"Cannot get symbol\""
                              }
                            ],
                            "id": 3323,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              10247,
                              10248
                            ],
                            "referencedDeclaration": 10248,
                            "src": "19112:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory) pure"
                            }
                          },
                          "id": 3325,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19112:27:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3326,
                        "nodeType": "ExpressionStatement",
                        "src": "19112:27:1"
                      }
                    ]
                  }
                },
                {
                  "body": {
                    "id": 3353,
                    "nodeType": "Block",
                    "src": "19249:128:1",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          },
                          "id": 3344,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3340,
                              "name": "result",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3312,
                              "src": "19267:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 3342,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3341,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3330,
                              "src": "19274:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "19267:13:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3343,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19284:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "19267:18:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3352,
                        "nodeType": "IfStatement",
                        "src": "19263:104:1",
                        "trueBody": {
                          "id": 3351,
                          "nodeType": "Block",
                          "src": "19287:80:1",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3346,
                                    "name": "result",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3312,
                                    "src": "19315:6:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 3347,
                                    "name": "index",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3330,
                                    "src": "19323:5:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 3345,
                                  "name": "setLength",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3369,
                                  "src": "19305:9:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$__$",
                                    "typeString": "function (bytes memory,uint256) pure"
                                  }
                                },
                                "id": 3348,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "19305:24:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3349,
                              "nodeType": "ExpressionStatement",
                              "src": "19305:24:1"
                            },
                            {
                              "id": 3350,
                              "nodeType": "Break",
                              "src": "19347:5:1"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3336,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3333,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3330,
                      "src": "19217:5:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3334,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3312,
                        "src": "19225:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 3335,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19225:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "19217:21:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3354,
                  "initializationExpression": {
                    "assignments": [
                      3330
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3330,
                        "name": "index",
                        "nodeType": "VariableDeclaration",
                        "scope": 3354,
                        "src": "19198:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3329,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19198:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 3332,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3331,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "19214:1:1",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "19198:17:1"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3338,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "19240:7:1",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 3337,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3330,
                        "src": "19240:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3339,
                    "nodeType": "ExpressionStatement",
                    "src": "19240:7:1"
                  },
                  "nodeType": "ForStatement",
                  "src": "19193:184:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3356,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3312,
                        "src": "19400:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 3355,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "19393:6:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                        "typeString": "type(string storage pointer)"
                      },
                      "typeName": "string"
                    },
                    "id": 3357,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19393:14:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 3308,
                  "id": 3358,
                  "nodeType": "Return",
                  "src": "19386:21:1"
                }
              ]
            },
            "documentation": "@dev returns the symbol() of the given address assuming it is returned as a bytes.\nReverts if method does not exist or returns data that cannot be casted into a string.\n@param token the token address from which to receive the symbol\n@return the token's symbol converted into a trimmed (trailing 0 bytes remove) string.",
            "id": 3360,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getTokenSymbolBytes",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3305,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3304,
                  "name": "token",
                  "nodeType": "VariableDeclaration",
                  "scope": 3360,
                  "src": "18922:13:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3303,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18922:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18921:15:1"
            },
            "returnParameters": {
              "id": 3308,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3307,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3360,
                  "src": "18958:13:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3306,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "18958:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18957:15:1"
            },
            "scope": 3517,
            "src": "18893:521:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3368,
              "nodeType": "Block",
              "src": "19756:71:1",
              "statements": [
                {
                  "externalReferences": [
                    {
                      "buffer": {
                        "declaration": 3362,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "19796:6:1",
                        "valueSize": 1
                      }
                    },
                    {
                      "length": {
                        "declaration": 3364,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "19804:6:1",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 3367,
                  "nodeType": "InlineAssembly",
                  "operations": "{ mstore(buffer, length) }",
                  "src": "19766:55:1"
                }
              ]
            },
            "documentation": "@dev Sets the length of the given buffer (truncating any items exceeding the length).\nNote, that this can lead to memory leakage or undefined behavior if length  is larger than the size\nthat was originally allocated by the buffer.",
            "id": 3369,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setLength",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3365,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3362,
                  "name": "buffer",
                  "nodeType": "VariableDeclaration",
                  "scope": 3369,
                  "src": "19707:19:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3361,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "19707:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3364,
                  "name": "length",
                  "nodeType": "VariableDeclaration",
                  "scope": 3369,
                  "src": "19728:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3363,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "19728:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "19706:37:1"
            },
            "returnParameters": {
              "id": 3366,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "19756:0:1"
            },
            "scope": 3517,
            "src": "19688:139:1",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3401,
              "nodeType": "Block",
              "src": "19959:120:1",
              "statements": [
                {
                  "body": {
                    "id": 3399,
                    "nodeType": "Block",
                    "src": "20013:60:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3397,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3389,
                              "name": "destination",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3373,
                              "src": "20027:11:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 3393,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3392,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3390,
                                "name": "offset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3375,
                                "src": "20039:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 3391,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3379,
                                "src": "20048:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "20039:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "20027:23:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3394,
                              "name": "source",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3371,
                              "src": "20053:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 3396,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3395,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3379,
                              "src": "20060:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "20053:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          },
                          "src": "20027:35:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        },
                        "id": 3398,
                        "nodeType": "ExpressionStatement",
                        "src": "20027:35:1"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3385,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3382,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3379,
                      "src": "19989:1:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3383,
                        "name": "source",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3371,
                        "src": "19993:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 3384,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19993:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "19989:17:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3400,
                  "initializationExpression": {
                    "assignments": [
                      3379
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3379,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3400,
                        "src": "19974:9:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3378,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19974:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 3381,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3380,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "19986:1:1",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "19974:13:1"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3387,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "20008:3:1",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 3386,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3379,
                        "src": "20008:1:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3388,
                    "nodeType": "ExpressionStatement",
                    "src": "20008:3:1"
                  },
                  "nodeType": "ForStatement",
                  "src": "19969:104:1"
                }
              ]
            },
            "documentation": null,
            "id": 3402,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "copyInPlace",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3376,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3371,
                  "name": "source",
                  "nodeType": "VariableDeclaration",
                  "scope": 3402,
                  "src": "19863:19:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3370,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "19863:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3373,
                  "name": "destination",
                  "nodeType": "VariableDeclaration",
                  "scope": 3402,
                  "src": "19892:24:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3372,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "19892:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3375,
                  "name": "offset",
                  "nodeType": "VariableDeclaration",
                  "scope": 3402,
                  "src": "19926:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3374,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "19926:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "19853:93:1"
            },
            "returnParameters": {
              "id": 3377,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "19959:0:1"
            },
            "scope": 3517,
            "src": "19833:246:1",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3515,
              "nodeType": "Block",
              "src": "20518:1469:1",
              "statements": [
                {
                  "assignments": [
                    3417,
                    3419,
                    3421,
                    3423,
                    3425,
                    3427,
                    3429
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3417,
                      "name": "buyToken",
                      "nodeType": "VariableDeclaration",
                      "scope": 3515,
                      "src": "20542:15:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 3416,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "20542:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3419,
                      "name": "sellToken",
                      "nodeType": "VariableDeclaration",
                      "scope": 3515,
                      "src": "20571:16:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 3418,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "20571:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3421,
                      "name": "validFrom",
                      "nodeType": "VariableDeclaration",
                      "scope": 3515,
                      "src": "20601:16:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 3420,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "20601:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3423,
                      "name": "validUntil",
                      "nodeType": "VariableDeclaration",
                      "scope": 3515,
                      "src": "20631:17:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 3422,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "20631:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3425,
                      "name": "priceNumerator",
                      "nodeType": "VariableDeclaration",
                      "scope": 3515,
                      "src": "20662:22:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      },
                      "typeName": {
                        "id": 3424,
                        "name": "uint128",
                        "nodeType": "ElementaryTypeName",
                        "src": "20662:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3427,
                      "name": "priceDenominator",
                      "nodeType": "VariableDeclaration",
                      "scope": 3515,
                      "src": "20698:24:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      },
                      "typeName": {
                        "id": 3426,
                        "name": "uint128",
                        "nodeType": "ElementaryTypeName",
                        "src": "20698:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3429,
                      "name": "usedAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 3515,
                      "src": "20736:18:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      },
                      "typeName": {
                        "id": 3428,
                        "name": "uint128",
                        "nodeType": "ElementaryTypeName",
                        "src": "20736:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3442,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3432,
                        "name": "order",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3409,
                        "src": "20778:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "id": 3433,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "20786:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint16_$",
                              "typeString": "type(uint16)"
                            },
                            "typeName": "uint16"
                          },
                          {
                            "argumentTypes": null,
                            "id": 3434,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "20794:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint16_$",
                              "typeString": "type(uint16)"
                            },
                            "typeName": "uint16"
                          },
                          {
                            "argumentTypes": null,
                            "id": 3435,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "20802:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint32_$",
                              "typeString": "type(uint32)"
                            },
                            "typeName": "uint32"
                          },
                          {
                            "argumentTypes": null,
                            "id": 3436,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "20810:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint32_$",
                              "typeString": "type(uint32)"
                            },
                            "typeName": "uint32"
                          },
                          {
                            "argumentTypes": null,
                            "id": 3437,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "20818:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint128_$",
                              "typeString": "type(uint128)"
                            },
                            "typeName": "uint128"
                          },
                          {
                            "argumentTypes": null,
                            "id": 3438,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "20827:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint128_$",
                              "typeString": "type(uint128)"
                            },
                            "typeName": "uint128"
                          },
                          {
                            "argumentTypes": null,
                            "id": 3439,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "20836:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint128_$",
                              "typeString": "type(uint128)"
                            },
                            "typeName": "uint128"
                          }
                        ],
                        "id": 3440,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "20785:59:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_type$_t_uint16_$_$_t_type$_t_uint16_$_$_t_type$_t_uint32_$_$_t_type$_t_uint32_$_$_t_type$_t_uint128_$_$_t_type$_t_uint128_$_$_t_type$_t_uint128_$_$",
                          "typeString": "tuple(type(uint16),type(uint16),type(uint32),type(uint32),type(uint128),type(uint128),type(uint128))"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_tuple$_t_type$_t_uint16_$_$_t_type$_t_uint16_$_$_t_type$_t_uint32_$_$_t_type$_t_uint32_$_$_t_type$_t_uint128_$_$_t_type$_t_uint128_$_$_t_type$_t_uint128_$_$",
                          "typeString": "tuple(type(uint16),type(uint16),type(uint32),type(uint32),type(uint128),type(uint128),type(uint128))"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3430,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10229,
                        "src": "20767:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 3431,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "20767:10:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 3441,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20767:78:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint16_$_t_uint16_$_t_uint32_$_t_uint32_$_t_uint128_$_t_uint128_$_t_uint128_$",
                      "typeString": "tuple(uint16,uint16,uint32,uint32,uint128,uint128,uint128)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "20528:317:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3446,
                            "name": "user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3407,
                            "src": "20958:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3444,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10229,
                            "src": "20941:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 3445,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "20941:16:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 3447,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "20941:22:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3448,
                        "name": "target",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3411,
                        "src": "20965:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3449,
                        "name": "offset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3413,
                        "src": "20973:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3443,
                      "name": "copyInPlace",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3402,
                      "src": "20929:11:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes memory,bytes memory,uint256) pure"
                      }
                    },
                    "id": 3450,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20929:51:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3451,
                  "nodeType": "ExpressionStatement",
                  "src": "20929:51:1"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3453,
                        "name": "buyToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3417,
                        "src": "21013:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3454,
                        "name": "sellToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3419,
                        "src": "21023:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3455,
                        "name": "tokenFilter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3405,
                        "src": "21034:11:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                          "typeString": "uint16[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                          "typeString": "uint16[] memory"
                        }
                      ],
                      "id": 3452,
                      "name": "matchesTokenFilter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2907,
                      "src": "20994:18:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint16_$_t_uint16_$_t_array$_t_uint16_$dyn_memory_ptr_$returns$_t_bool_$",
                        "typeString": "function (uint16,uint16,uint16[] memory) pure returns (bool)"
                      }
                    },
                    "id": 3456,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20994:52:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 3513,
                    "nodeType": "Block",
                    "src": "21679:302:1",
                    "statements": [
                      {
                        "body": {
                          "id": 3511,
                          "nodeType": "Block",
                          "src": "21916:55:1",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3509,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3503,
                                    "name": "target",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3411,
                                    "src": "21934:6:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 3507,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3506,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 3504,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3494,
                                      "src": "21941:1:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 3505,
                                      "name": "offset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3413,
                                      "src": "21945:6:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "21941:10:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "21934:18:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 3508,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "21955:1:1",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "21934:22:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "id": 3510,
                              "nodeType": "ExpressionStatement",
                              "src": "21934:22:1"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3499,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3497,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3494,
                            "src": "21884:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3498,
                            "name": "AUCTION_ELEMENT_WIDTH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2241,
                            "src": "21888:21:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "21884:25:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3512,
                        "initializationExpression": {
                          "assignments": [
                            3494
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 3494,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 3512,
                              "src": "21857:9:1",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 3493,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "21857:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 3496,
                          "initialValue": {
                            "argumentTypes": null,
                            "id": 3495,
                            "name": "ADDRESS_WIDTH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2249,
                            "src": "21869:13:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "21857:25:1"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 3501,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "21911:3:1",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 3500,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3494,
                              "src": "21911:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3502,
                          "nodeType": "ExpressionStatement",
                          "src": "21911:3:1"
                        },
                        "nodeType": "ForStatement",
                        "src": "21852:119:1"
                      }
                    ]
                  },
                  "id": 3514,
                  "nodeType": "IfStatement",
                  "src": "20990:991:1",
                  "trueBody": {
                    "id": 3492,
                    "nodeType": "Block",
                    "src": "21048:625:1",
                    "statements": [
                      {
                        "assignments": [
                          3458
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3458,
                            "name": "remainingAmount",
                            "nodeType": "VariableDeclaration",
                            "scope": 3492,
                            "src": "21062:23:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            },
                            "typeName": {
                              "id": 3457,
                              "name": "uint128",
                              "nodeType": "ElementaryTypeName",
                              "src": "21062:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3462,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          },
                          "id": 3461,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3459,
                            "name": "priceDenominator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3427,
                            "src": "21088:16:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3460,
                            "name": "usedAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3429,
                            "src": "21107:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "21088:29:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "21062:55:1"
                      },
                      {
                        "assignments": [
                          3464
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3464,
                            "name": "sellTokenBalance",
                            "nodeType": "VariableDeclaration",
                            "scope": 3492,
                            "src": "21131:24:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3463,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "21131:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3473,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3467,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3407,
                              "src": "21183:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3470,
                                  "name": "sellToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3419,
                                  "src": "21223:9:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3468,
                                  "name": "batchExchange",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2257,
                                  "src": "21189:13:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_BatchExchange_$2226",
                                    "typeString": "contract BatchExchange"
                                  }
                                },
                                "id": 3469,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "tokenIdToAddressMap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 907,
                                "src": "21189:33:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_uint16_$returns$_t_address_$",
                                  "typeString": "function (uint16) view external returns (address)"
                                }
                              },
                              "id": 3471,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "21189:44:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3465,
                              "name": "batchExchange",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2257,
                              "src": "21158:13:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_BatchExchange_$2226",
                                "typeString": "contract BatchExchange"
                              }
                            },
                            "id": 3466,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getBalance",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3976,
                            "src": "21158:24:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address,address) view external returns (uint256)"
                            }
                          },
                          "id": 3472,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21158:76:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "21131:103:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3477,
                                  "name": "sellTokenBalance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3464,
                                  "src": "21315:16:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3478,
                                  "name": "buyToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3417,
                                  "src": "21353:8:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3479,
                                  "name": "sellToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3419,
                                  "src": "21383:9:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3480,
                                  "name": "validFrom",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3421,
                                  "src": "21414:9:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3481,
                                  "name": "validUntil",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3423,
                                  "src": "21445:10:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3482,
                                  "name": "priceNumerator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3425,
                                  "src": "21477:14:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3483,
                                  "name": "priceDenominator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3427,
                                  "src": "21513:16:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3484,
                                  "name": "remainingAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3458,
                                  "src": "21551:15:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  },
                                  {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  },
                                  {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  },
                                  {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  },
                                  {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  },
                                  {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  },
                                  {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3475,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10229,
                                  "src": "21277:3:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 3476,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "21277:16:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 3485,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "21277:307:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3486,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3411,
                              "src": "21602:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3489,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3487,
                                "name": "offset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3413,
                                "src": "21626:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 3488,
                                "name": "ADDRESS_WIDTH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2249,
                                "src": "21635:13:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "src": "21626:22:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3474,
                            "name": "copyInPlace",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3402,
                            "src": "21248:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$",
                              "typeString": "function (bytes memory,bytes memory,uint256) pure"
                            }
                          },
                          "id": 3490,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21248:414:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3491,
                        "nodeType": "ExpressionStatement",
                        "src": "21248:414:1"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@dev Encodes the auction elements in the same format as BatchExchange.encodeAuctionElement with\nthe only difference that order with tokens that match the token filter will be 0 serialized\n(as if they were deleted)",
            "id": 3516,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "encodeAuctionElement",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3414,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3405,
                  "name": "tokenFilter",
                  "nodeType": "VariableDeclaration",
                  "scope": 3516,
                  "src": "20368:27:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr",
                    "typeString": "uint16[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3403,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "20368:6:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 3404,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "20368:8:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$dyn_storage_ptr",
                      "typeString": "uint16[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3407,
                  "name": "user",
                  "nodeType": "VariableDeclaration",
                  "scope": 3516,
                  "src": "20405:12:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3406,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "20405:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3409,
                  "name": "order",
                  "nodeType": "VariableDeclaration",
                  "scope": 3516,
                  "src": "20427:18:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3408,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "20427:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3411,
                  "name": "target",
                  "nodeType": "VariableDeclaration",
                  "scope": 3516,
                  "src": "20455:19:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3410,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "20455:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3413,
                  "name": "offset",
                  "nodeType": "VariableDeclaration",
                  "scope": 3516,
                  "src": "20484:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3412,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "20484:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "20358:146:1"
            },
            "returnParameters": {
              "id": 3415,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "20518:0:1"
            },
            "scope": 3517,
            "src": "20329:1658:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "private"
          }
        ],
        "scope": 3518,
        "src": "227:21762:1"
      }
    ],
    "src": "0:21990:1"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.10+commit.5a6ea5b1.Emscripten.clang"
  },
  "networks": {
    "1": {
      "links": {},
      "address": "0x7D071fb584b51D9c38572A04E1848afd835cD457",
      "transactionHash": "0xd1be3b9bfc2bab273e3893ebc56c2925c2e41ab70d96694705bd90dbedcfd1c3"
    },
    "4": {
      "links": {},
      "address": "0x0A7a7E35098b5F969E5d45680827AC478e6e8Ce3",
      "transactionHash": "0x0e2ea4e0550d0b960aacc10576ac7e07c5285696f08a0b4b8f608f5b3f098a4f"
    },
    "100": {
      "links": {},
      "address": "0x51138aad07EbABa6a1D1254cf740Df97B96bFB64",
      "transactionHash": "0x4afb81a41e4d7633046302eece8b7a38fc6dcd304d3e35db55c150c31fd3eb60"
    }
  },
  "schemaVersion": "3.3.1",
  "updatedAt": "2020-11-19T13:47:49.767Z",
  "devdoc": {
    "methods": {
      "getEncodedOrdersPaginated(address,uint16,uint256)": {
        "details": "View returning byte-encoded sell orders in paginated form. It has the same behavior as BatchExchange.getEncodedUsersPaginated but uses less memory and thus is more gas efficient.",
        "params": {
          "pageSize": "uint determining the count of orders to be returned per page",
          "previousPageUser": "address of last user received in the previous page (address(0) for first page)",
          "previousPageUserOffset": "the number of orders received for the last user on the previous page (0 for first page)."
        },
        "return": "encoded bytes representing a page of orders ordered by (user, index)"
      },
      "getFilteredOrdersPaginated(uint32[3],uint16[],address,uint16,uint16)": {
        "details": "Queries a page in the list of all orders",
        "params": {
          "batchIds": "Triple with the following values [maxValidFrom, minValidUntil, sellBalanceTargetBatchIndex] Batched together as we are running out of local variables (Solidity does not compile with Stack too deep error)     - maxValidFrom: all returned orders will have a validFrom <= this value (they were placed at or before that batch)     - minValidUntil all returned orders will have a validUntil >= this value (validity ends at or after that batch)     - sellBalanceTargetBatchIndex the batchIndex at which we are expecting the sellTokenBalance to be valid (e.g. in the current live orderbook we want to include sellBalances that are valid in currentBatch + 1).",
          "maxPageSize": "maximum count of elements to be returned per page (same value is used for subqueries on the exchange)",
          "previousPageUser": "address taken from nextPageUser return value from last page (address(0) for first page)",
          "previousPageUserOffset": "offset taken nextPageUserOffset return value from last page (0 for first page)",
          "tokenFilter": "all returned order will have buy *and* sell token from this list (leave empty for \"no filter\")"
        },
        "return": "encoded bytes representing orders and page information for next page. Result can contain less elements than maxPageSize if remaining gas is low."
      },
      "getFinalizedOrderBook(address[])": {
        "details": "Queries the orderbook for the auction that is currently being solved",
        "params": {
          "tokenFilter": "all returned order will have buy *and* sell token from this list (leave empty for \"no filter\")"
        },
        "return": "encoded bytes representing orders, maxed at 5000 elements"
      },
      "getFinalizedOrderBookPaginated(address[],address,uint16,uint16)": {
        "details": "Queries a page of the orderbook for the auction that is currently being solved",
        "params": {
          "maxPageSize": "count of elements to be returned per page (same value is used for subqueries on the exchange)",
          "previousPageUser": "address taken from nextPageUser return value from last page (address(0) for first page)",
          "previousPageUserOffset": "offset taken nextPageUserOffset return value from last page (0 for first page)",
          "tokenFilter": "all returned order will have buy *and* sell token from this list (leave empty for \"no filter\")"
        },
        "return": "encoded bytes representing orders and page information for next page"
      },
      "getOpenOrderBook(address[])": {
        "details": "Queries the orderbook for the auction that is still accepting orders",
        "params": {
          "tokenFilter": "all returned order will have buy *and* sell token from this list (leave empty for \"no filter\")"
        },
        "return": "encoded bytes representing orders, maxed at 5000 elements"
      },
      "getOpenOrderBookPaginated(address[],address,uint16,uint16)": {
        "details": "Queries a page of the orderbook for the auction that is still accepting orders",
        "params": {
          "maxPageSize": "count of elements to be returned per page (same value is used for subqueries on the exchange)",
          "previousPageUser": "address taken from nextPageUser return value from last page (address(0) for first page)",
          "previousPageUserOffset": "offset taken nextPageUserOffset return value from last page (0 for first page)",
          "tokenFilter": "all returned order will have buy *and* sell token from this list (leave empty for \"no filter\")"
        },
        "return": "encoded bytes representing orders and page information for next page"
      },
      "getTokenInfo(uint16)": {
        "details": "Queries the token information for the given tokenId. Can handle symbols of type string and bytes (e.g. MKR). Returns \"Unknown\" as symbol value if it cannot be retrieved and reverts if decimals can not be fetched (to avoid ambiguity with a \"valid\" value).",
        "params": {
          "tokenId": "the ID of a token listed on BatchExchange"
        },
        "return": "the address, symbol and decimals of the token contract"
      },
      "getTokenSymbolBytes(address)": {
        "details": "returns the symbol() of the given address assuming it is returned as a bytes. Reverts if method does not exist or returns data that cannot be casted into a string.",
        "params": {
          "token": "the token address from which to receive the symbol"
        },
        "return": "the token's symbol converted into a trimmed (trailing 0 bytes remove) string."
      },
      "getTokenSymbolString(address)": {
        "details": "returns the symbol() of the given address assuming it is returned as a string. Reverts if method does not exist or returns data that is not a valid string.",
        "params": {
          "token": "the token address from which to receive the symbol"
        },
        "return": "the token's symbol"
      },
      "setLength(bytes,uint256)": {
        "details": "Sets the length of the given buffer (truncating any items exceeding the length). Note, that this can lead to memory leakage or undefined behavior if length  is larger than the size that was originally allocated by the buffer."
      }
    }
  },
  "userdoc": {
    "methods": {}
  }
}
